<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE GADTs, RankNTypes #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE BangPatterns #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE LambdaCase #-}</span><span>
</span><span id="line-4"></span><span>
</span><span id="line-5"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}</span><span>
</span><span id="line-6"></span><span>
</span><span id="line-7"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-8"></span><span class="hs-comment">--</span><span>
</span><span id="line-9"></span><span class="hs-comment">-- Cmm utilities.</span><span>
</span><span id="line-10"></span><span class="hs-comment">--</span><span>
</span><span id="line-11"></span><span class="hs-comment">-- (c) The University of Glasgow 2004-2006</span><span>
</span><span id="line-12"></span><span class="hs-comment">--</span><span>
</span><span id="line-13"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-14"></span><span>
</span><span id="line-15"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Cmm.Utils</span><span class="hs-special">(</span><span>
</span><span id="line-16"></span><span>        </span><span class="hs-comment">-- CmmType</span><span>
</span><span id="line-17"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepCmmType"><span class="hs-identifier">primRepCmmType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#slotCmmType"><span class="hs-identifier">slotCmmType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier">slotForeignHint</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#typeCmmType"><span class="hs-identifier">typeCmmType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#typeForeignHint"><span class="hs-identifier">typeForeignHint</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier">primRepForeignHint</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-19"></span><span>
</span><span id="line-20"></span><span>        </span><span class="hs-comment">-- CmmLit</span><span>
</span><span id="line-21"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#zeroCLit"><span class="hs-identifier">zeroCLit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkIntCLit"><span class="hs-identifier">mkIntCLit</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-22"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkWordCLit"><span class="hs-identifier">mkWordCLit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#packHalfWordsCLit"><span class="hs-identifier">packHalfWordsCLit</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-23"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkByteStringCLit"><span class="hs-identifier">mkByteStringCLit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkFileEmbedLit"><span class="hs-identifier">mkFileEmbedLit</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-24"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkDataLits"><span class="hs-identifier">mkDataLits</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkRODataLits"><span class="hs-identifier">mkRODataLits</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-25"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkStgWordCLit"><span class="hs-identifier">mkStgWordCLit</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>
</span><span id="line-27"></span><span>        </span><span class="hs-comment">-- CmmExpr</span><span>
</span><span id="line-28"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkIntExpr"><span class="hs-identifier">mkIntExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#zeroExpr"><span class="hs-identifier">zeroExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-29"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkLblExpr"><span class="hs-identifier">mkLblExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier">cmmRegOff</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffset"><span class="hs-identifier">cmmOffset</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLabelOff"><span class="hs-identifier">cmmLabelOff</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier">cmmOffsetLit</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExpr"><span class="hs-identifier">cmmOffsetExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-31"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmRegOffB"><span class="hs-identifier">cmmRegOffB</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier">cmmOffsetB</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLabelOffB"><span class="hs-identifier">cmmLabelOffB</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLitB"><span class="hs-identifier">cmmOffsetLitB</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExprB"><span class="hs-identifier">cmmOffsetExprB</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-32"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmRegOffW"><span class="hs-identifier">cmmRegOffW</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetW"><span class="hs-identifier">cmmOffsetW</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLabelOffW"><span class="hs-identifier">cmmLabelOffW</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLitW"><span class="hs-identifier">cmmOffsetLitW</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExprW"><span class="hs-identifier">cmmOffsetExprW</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-33"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmIndex"><span class="hs-identifier">cmmIndex</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmIndexExpr"><span class="hs-identifier">cmmIndexExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLoadIndex"><span class="hs-identifier">cmmLoadIndex</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLoadIndexW"><span class="hs-identifier">cmmLoadIndexW</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-34"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmNegate"><span class="hs-identifier">cmmNegate</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-35"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmULtWord"><span class="hs-identifier">cmmULtWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUGeWord"><span class="hs-identifier">cmmUGeWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUGtWord"><span class="hs-identifier">cmmUGtWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUShrWord"><span class="hs-identifier">cmmUShrWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-36"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmSLtWord"><span class="hs-identifier">cmmSLtWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-37"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmNeWord"><span class="hs-identifier">cmmNeWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmEqWord"><span class="hs-identifier">cmmEqWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-38"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOrWord"><span class="hs-identifier">cmmOrWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmAndWord"><span class="hs-identifier">cmmAndWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-39"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmSubWord"><span class="hs-identifier">cmmSubWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmAddWord"><span class="hs-identifier">cmmAddWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmMulWord"><span class="hs-identifier">cmmMulWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmQuotWord"><span class="hs-identifier">cmmQuotWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-40"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmToWord"><span class="hs-identifier">cmmToWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-41"></span><span>
</span><span id="line-42"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmMkAssign"><span class="hs-identifier">cmmMkAssign</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier">isTrivialCmmExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier">hasNoGlobalRegs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#isLit"><span class="hs-identifier">isLit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#isComparisonExpr"><span class="hs-identifier">isComparisonExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-45"></span><span>
</span><span id="line-46"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#baseExpr"><span class="hs-identifier">baseExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#spExpr"><span class="hs-identifier">spExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#hpExpr"><span class="hs-identifier">hpExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#spLimExpr"><span class="hs-identifier">spLimExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#hpLimExpr"><span class="hs-identifier">hpLimExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-47"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#currentTSOExpr"><span class="hs-identifier">currentTSOExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#currentNurseryExpr"><span class="hs-identifier">currentNurseryExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cccsExpr"><span class="hs-identifier">cccsExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-48"></span><span>
</span><span id="line-49"></span><span>        </span><span class="hs-comment">-- Tagging</span><span>
</span><span id="line-50"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmTagMask"><span class="hs-identifier">cmmTagMask</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmPointerMask"><span class="hs-identifier">cmmPointerMask</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUntag"><span class="hs-identifier">cmmUntag</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmIsTagged"><span class="hs-identifier">cmmIsTagged</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-51"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmConstrTag1"><span class="hs-identifier">cmmConstrTag1</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-52"></span><span>
</span><span id="line-53"></span><span>        </span><span class="hs-comment">-- Overlap and usage</span><span>
</span><span id="line-54"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#regsOverlap"><span class="hs-identifier">regsOverlap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#regUsedIn"><span class="hs-identifier">regUsedIn</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-55"></span><span>
</span><span id="line-56"></span><span>        </span><span class="hs-comment">-- Liveness and bitmaps</span><span>
</span><span id="line-57"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#mkLiveness"><span class="hs-identifier">mkLiveness</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-58"></span><span>
</span><span id="line-59"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Operations that probably don't belong here</span></span><span>
</span><span id="line-60"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#modifyGraph"><span class="hs-identifier">modifyGraph</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-61"></span><span>
</span><span id="line-62"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#ofBlockMap"><span class="hs-identifier">ofBlockMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier">toBlockMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-63"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#ofBlockList"><span class="hs-identifier">ofBlockList</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockList"><span class="hs-identifier">toBlockList</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#bodyToBlockList"><span class="hs-identifier">bodyToBlockList</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-64"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockListEntryFirst"><span class="hs-identifier">toBlockListEntryFirst</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockListEntryFirstFalseFallthrough"><span class="hs-identifier">toBlockListEntryFirstFalseFallthrough</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-65"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#foldlGraphBlocks"><span class="hs-identifier">foldlGraphBlocks</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#mapGraphNodes"><span class="hs-identifier">mapGraphNodes</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#revPostorder"><span class="hs-identifier">revPostorder</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#mapGraphNodes1"><span class="hs-identifier">mapGraphNodes1</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-66"></span><span>
</span><span id="line-67"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Ticks</span></span><span>
</span><span id="line-68"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Utils.html#blockTicks"><span class="hs-identifier">blockTicks</span></a></span><span>
</span><span id="line-69"></span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-70"></span><span>
</span><span id="line-71"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-72"></span><span>
</span><span id="line-73"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html"><span class="hs-identifier">GHC.Core.TyCon</span></a></span><span>     </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier">PrimRep</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimElemRep"><span class="hs-identifier">PrimElemRep</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-74"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html"><span class="hs-identifier">GHC.Types.RepType</span></a></span><span>  </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#UnaryType"><span class="hs-identifier">UnaryType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#SlotTy"><span class="hs-identifier">SlotTy</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#typePrimRep1"><span class="hs-identifier">typePrimRep1</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-75"></span><span>
</span><span id="line-76"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-77"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html"><span class="hs-identifier">GHC.Runtime.Heap.Layout</span></a></span><span>
</span><span id="line-78"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.html"><span class="hs-identifier">GHC.Cmm</span></a></span><span>
</span><span id="line-79"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html"><span class="hs-identifier">GHC.Cmm.BlockId</span></a></span><span>
</span><span id="line-80"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-81"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-82"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html"><span class="hs-identifier">GHC.Driver.Session</span></a></span><span>
</span><span id="line-83"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html"><span class="hs-identifier">GHC.Types.Unique</span></a></span><span>
</span><span id="line-84"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Regs.html"><span class="hs-identifier">GHC.Platform.Regs</span></a></span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.html#"><span class="hs-identifier">Data.ByteString</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier">ByteString</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-87"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.html#"><span class="hs-identifier">Data.ByteString</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">BS</span></span><span>
</span><span id="line-88"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Bits.html#"><span class="hs-identifier">Data.Bits</span></a></span><span>
</span><span id="line-89"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Graph.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Graph</span></a></span><span>
</span><span id="line-90"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Label.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Label</span></a></span><span>
</span><span id="line-91"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Block</span></a></span><span>
</span><span id="line-92"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Collections.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Collections</span></a></span><span>
</span><span id="line-93"></span><span>
</span><span id="line-94"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-95"></span><span class="hs-comment">--</span><span>
</span><span id="line-96"></span><span class="hs-comment">--      CmmTypes</span><span>
</span><span id="line-97"></span><span class="hs-comment">--</span><span>
</span><span id="line-98"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-99"></span><span>
</span><span id="line-100"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepCmmType"><span class="hs-identifier hs-type">primRepCmmType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier hs-type">PrimRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-101"></span><span id="primRepCmmType"><span class="annot"><span class="annottext">primRepCmmType :: Platform -&gt; PrimRep -&gt; CmmType
</span><a href="GHC.Cmm.Utils.html#primRepCmmType"><span class="hs-identifier hs-var hs-var">primRepCmmType</span></a></span></span><span> </span><span id="local-6989586621681010438"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010438"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-102"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#VoidRep"><span class="hs-identifier hs-var">VoidRep</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; CmmType
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;primRepCmmType:VoidRep&quot;</span></span><span>
</span><span id="line-103"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#gcWord"><span class="hs-identifier hs-var">gcWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010438"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-104"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#gcWord"><span class="hs-identifier hs-var">gcWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010438"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-105"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#IntRep"><span class="hs-identifier hs-var">IntRep</span></a></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010438"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-106"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#WordRep"><span class="hs-identifier hs-var">WordRep</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010438"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-107"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int8Rep"><span class="hs-identifier hs-var">Int8Rep</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b8"><span class="hs-identifier hs-var">b8</span></a></span><span>
</span><span id="line-108"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word8Rep"><span class="hs-identifier hs-var">Word8Rep</span></a></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b8"><span class="hs-identifier hs-var">b8</span></a></span><span>
</span><span id="line-109"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int16Rep"><span class="hs-identifier hs-var">Int16Rep</span></a></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b16"><span class="hs-identifier hs-var">b16</span></a></span><span>
</span><span id="line-110"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word16Rep"><span class="hs-identifier hs-var">Word16Rep</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b16"><span class="hs-identifier hs-var">b16</span></a></span><span>
</span><span id="line-111"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int32Rep"><span class="hs-identifier hs-var">Int32Rep</span></a></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b32"><span class="hs-identifier hs-var">b32</span></a></span><span>
</span><span id="line-112"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word32Rep"><span class="hs-identifier hs-var">Word32Rep</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b32"><span class="hs-identifier hs-var">b32</span></a></span><span>
</span><span id="line-113"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int64Rep"><span class="hs-identifier hs-var">Int64Rep</span></a></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b64"><span class="hs-identifier hs-var">b64</span></a></span><span>
</span><span id="line-114"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word64Rep"><span class="hs-identifier hs-var">Word64Rep</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b64"><span class="hs-identifier hs-var">b64</span></a></span><span>
</span><span id="line-115"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010438"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-116"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#FloatRep"><span class="hs-identifier hs-var">FloatRep</span></a></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#f32"><span class="hs-identifier hs-var">f32</span></a></span><span>
</span><span id="line-117"></span><span>   </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#DoubleRep"><span class="hs-identifier hs-var">DoubleRep</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#f64"><span class="hs-identifier hs-var">f64</span></a></span><span>
</span><span id="line-118"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCon.html#VecRep"><span class="hs-identifier hs-type">VecRep</span></a></span><span> </span><span id="local-6989586621681010411"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010411"><span class="hs-identifier hs-var">len</span></a></span></span><span> </span><span id="local-6989586621681010410"><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621681010410"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; CmmType -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#vec"><span class="hs-identifier hs-var">vec</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010411"><span class="hs-identifier hs-var">len</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PrimElemRep -&gt; CmmType
</span><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621681010410"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-119"></span><span>
</span><span id="line-120"></span><span class="annot"><a href="GHC.Cmm.Utils.html#slotCmmType"><span class="hs-identifier hs-type">slotCmmType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#SlotTy"><span class="hs-identifier hs-type">SlotTy</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-121"></span><span id="slotCmmType"><span class="annot"><span class="annottext">slotCmmType :: Platform -&gt; SlotTy -&gt; CmmType
</span><a href="GHC.Cmm.Utils.html#slotCmmType"><span class="hs-identifier hs-var hs-var">slotCmmType</span></a></span></span><span> </span><span id="local-6989586621681010407"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010407"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-122"></span><span>   </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#PtrUnliftedSlot"><span class="hs-identifier hs-var">PtrUnliftedSlot</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#gcWord"><span class="hs-identifier hs-var">gcWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010407"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-123"></span><span>   </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#PtrLiftedSlot"><span class="hs-identifier hs-var">PtrLiftedSlot</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#gcWord"><span class="hs-identifier hs-var">gcWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010407"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-124"></span><span>   </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#WordSlot"><span class="hs-identifier hs-var">WordSlot</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010407"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-125"></span><span>   </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#Word64Slot"><span class="hs-identifier hs-var">Word64Slot</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b64"><span class="hs-identifier hs-var">b64</span></a></span><span>
</span><span id="line-126"></span><span>   </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#FloatSlot"><span class="hs-identifier hs-var">FloatSlot</span></a></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#f32"><span class="hs-identifier hs-var">f32</span></a></span><span>
</span><span id="line-127"></span><span>   </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#DoubleSlot"><span class="hs-identifier hs-var">DoubleSlot</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#f64"><span class="hs-identifier hs-var">f64</span></a></span><span>
</span><span id="line-128"></span><span>
</span><span id="line-129"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-type">primElemRepCmmType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimElemRep"><span class="hs-identifier hs-type">PrimElemRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-130"></span><span id="primElemRepCmmType"><span class="annot"><span class="annottext">primElemRepCmmType :: PrimElemRep -&gt; CmmType
</span><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var hs-var">primElemRepCmmType</span></a></span></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int8ElemRep"><span class="hs-identifier hs-var">Int8ElemRep</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b8"><span class="hs-identifier hs-var">b8</span></a></span><span>
</span><span id="line-131"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int16ElemRep"><span class="hs-identifier hs-var">Int16ElemRep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b16"><span class="hs-identifier hs-var">b16</span></a></span><span>
</span><span id="line-132"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int32ElemRep"><span class="hs-identifier hs-var">Int32ElemRep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b32"><span class="hs-identifier hs-var">b32</span></a></span><span>
</span><span id="line-133"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int64ElemRep"><span class="hs-identifier hs-var">Int64ElemRep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b64"><span class="hs-identifier hs-var">b64</span></a></span><span>
</span><span id="line-134"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word8ElemRep"><span class="hs-identifier hs-var">Word8ElemRep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b8"><span class="hs-identifier hs-var">b8</span></a></span><span>
</span><span id="line-135"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word16ElemRep"><span class="hs-identifier hs-var">Word16ElemRep</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b16"><span class="hs-identifier hs-var">b16</span></a></span><span>
</span><span id="line-136"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word32ElemRep"><span class="hs-identifier hs-var">Word32ElemRep</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b32"><span class="hs-identifier hs-var">b32</span></a></span><span>
</span><span id="line-137"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word64ElemRep"><span class="hs-identifier hs-var">Word64ElemRep</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#b64"><span class="hs-identifier hs-var">b64</span></a></span><span>
</span><span id="line-138"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#FloatElemRep"><span class="hs-identifier hs-var">FloatElemRep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#f32"><span class="hs-identifier hs-var">f32</span></a></span><span>
</span><span id="line-139"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primElemRepCmmType"><span class="hs-identifier hs-var">primElemRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#DoubleElemRep"><span class="hs-identifier hs-var">DoubleElemRep</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="GHC.Cmm.Type.html#f64"><span class="hs-identifier hs-var">f64</span></a></span><span>
</span><span id="line-140"></span><span>
</span><span id="line-141"></span><span class="annot"><a href="GHC.Cmm.Utils.html#typeCmmType"><span class="hs-identifier hs-type">typeCmmType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#UnaryType"><span class="hs-identifier hs-type">UnaryType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-142"></span><span id="typeCmmType"><span class="annot"><span class="annottext">typeCmmType :: Platform -&gt; UnaryType -&gt; CmmType
</span><a href="GHC.Cmm.Utils.html#typeCmmType"><span class="hs-identifier hs-var hs-var">typeCmmType</span></a></span></span><span> </span><span id="local-6989586621681010390"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010390"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010389"><span class="annot"><span class="annottext">UnaryType
</span><a href="#local-6989586621681010389"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; PrimRep -&gt; CmmType
</span><a href="GHC.Cmm.Utils.html#primRepCmmType"><span class="hs-identifier hs-var">primRepCmmType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010390"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; UnaryType -&gt; PrimRep
UnaryType -&gt; PrimRep
</span><a href="GHC.Types.RepType.html#typePrimRep1"><span class="hs-identifier hs-var">typePrimRep1</span></a></span><span> </span><span class="annot"><span class="annottext">UnaryType
</span><a href="#local-6989586621681010389"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-143"></span><span>
</span><span id="line-144"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-type">primRepForeignHint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier hs-type">PrimRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#ForeignHint"><span class="hs-identifier hs-type">ForeignHint</span></a></span><span>
</span><span id="line-145"></span><span id="primRepForeignHint"><span class="annot"><span class="annottext">primRepForeignHint :: PrimRep -&gt; ForeignHint
</span><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var hs-var">primRepForeignHint</span></a></span></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#VoidRep"><span class="hs-identifier hs-var">VoidRep</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; ForeignHint
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;primRepForeignHint:VoidRep&quot;</span></span><span>
</span><span id="line-146"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span>
</span><span id="line-147"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span>
</span><span id="line-148"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#IntRep"><span class="hs-identifier hs-var">IntRep</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span>
</span><span id="line-149"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int8Rep"><span class="hs-identifier hs-var">Int8Rep</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span>
</span><span id="line-150"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int16Rep"><span class="hs-identifier hs-var">Int16Rep</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span>
</span><span id="line-151"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int32Rep"><span class="hs-identifier hs-var">Int32Rep</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span>
</span><span id="line-152"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int64Rep"><span class="hs-identifier hs-var">Int64Rep</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span>
</span><span id="line-153"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#WordRep"><span class="hs-identifier hs-var">WordRep</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-154"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word8Rep"><span class="hs-identifier hs-var">Word8Rep</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-155"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word16Rep"><span class="hs-identifier hs-var">Word16Rep</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-156"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word32Rep"><span class="hs-identifier hs-var">Word32Rep</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-157"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word64Rep"><span class="hs-identifier hs-var">Word64Rep</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-158"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span> </span><span class="hs-comment">-- NB! AddrHint, but NonPtrArg</span><span>
</span><span id="line-159"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#FloatRep"><span class="hs-identifier hs-var">FloatRep</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-160"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#DoubleRep"><span class="hs-identifier hs-var">DoubleRep</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-161"></span><span class="annot"><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCon.html#VecRep"><span class="hs-identifier hs-type">VecRep</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-162"></span><span>
</span><span id="line-163"></span><span class="annot"><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier hs-type">slotForeignHint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#SlotTy"><span class="hs-identifier hs-type">SlotTy</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#ForeignHint"><span class="hs-identifier hs-type">ForeignHint</span></a></span><span>
</span><span id="line-164"></span><span id="slotForeignHint"><span class="annot"><span class="annottext">slotForeignHint :: SlotTy -&gt; ForeignHint
</span><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier hs-var hs-var">slotForeignHint</span></a></span></span><span> </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#PtrLiftedSlot"><span class="hs-identifier hs-var">PtrLiftedSlot</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span>
</span><span id="line-165"></span><span class="annot"><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier hs-var">slotForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#PtrUnliftedSlot"><span class="hs-identifier hs-var">PtrUnliftedSlot</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span>
</span><span id="line-166"></span><span class="annot"><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier hs-var">slotForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#WordSlot"><span class="hs-identifier hs-var">WordSlot</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-167"></span><span class="annot"><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier hs-var">slotForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#Word64Slot"><span class="hs-identifier hs-var">Word64Slot</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-168"></span><span class="annot"><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier hs-var">slotForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#FloatSlot"><span class="hs-identifier hs-var">FloatSlot</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-169"></span><span class="annot"><a href="GHC.Cmm.Utils.html#slotForeignHint"><span class="hs-identifier hs-var">slotForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">SlotTy
</span><a href="GHC.Types.RepType.html#DoubleSlot"><span class="hs-identifier hs-var">DoubleSlot</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#NoHint"><span class="hs-identifier hs-var">NoHint</span></a></span><span>
</span><span id="line-170"></span><span>
</span><span id="line-171"></span><span class="annot"><a href="GHC.Cmm.Utils.html#typeForeignHint"><span class="hs-identifier hs-type">typeForeignHint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#UnaryType"><span class="hs-identifier hs-type">UnaryType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#ForeignHint"><span class="hs-identifier hs-type">ForeignHint</span></a></span><span>
</span><span id="line-172"></span><span id="typeForeignHint"><span class="annot"><span class="annottext">typeForeignHint :: UnaryType -&gt; ForeignHint
</span><a href="GHC.Cmm.Utils.html#typeForeignHint"><span class="hs-identifier hs-var hs-var">typeForeignHint</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PrimRep -&gt; ForeignHint
</span><a href="GHC.Cmm.Utils.html#primRepForeignHint"><span class="hs-identifier hs-var">primRepForeignHint</span></a></span><span> </span><span class="annot"><span class="annottext">(PrimRep -&gt; ForeignHint)
-&gt; (UnaryType -&gt; PrimRep) -&gt; UnaryType -&gt; ForeignHint
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; UnaryType -&gt; PrimRep
UnaryType -&gt; PrimRep
</span><a href="GHC.Types.RepType.html#typePrimRep1"><span class="hs-identifier hs-var">typePrimRep1</span></a></span><span>
</span><span id="line-173"></span><span>
</span><span id="line-174"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-175"></span><span class="hs-comment">--</span><span>
</span><span id="line-176"></span><span class="hs-comment">--      CmmLit</span><span>
</span><span id="line-177"></span><span class="hs-comment">--</span><span>
</span><span id="line-178"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-179"></span><span>
</span><span id="line-180"></span><span class="hs-comment">-- XXX: should really be Integer, since Int doesn't necessarily cover</span><span>
</span><span id="line-181"></span><span class="hs-comment">-- the full range of target Ints.</span><span>
</span><span id="line-182"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mkIntCLit"><span class="hs-identifier hs-type">mkIntCLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-183"></span><span id="mkIntCLit"><span class="annot"><span class="annottext">mkIntCLit :: Platform -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkIntCLit"><span class="hs-identifier hs-var hs-var">mkIntCLit</span></a></span></span><span> </span><span id="local-6989586621681010384"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010384"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010383"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010383"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010383"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010384"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-184"></span><span>
</span><span id="line-185"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mkIntExpr"><span class="hs-identifier hs-type">mkIntExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-186"></span><span id="mkIntExpr"><span class="annot"><span class="annottext">mkIntExpr :: Platform -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#mkIntExpr"><span class="hs-identifier hs-var hs-var">mkIntExpr</span></a></span></span><span> </span><span id="local-6989586621681010380"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010380"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010379"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010379"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmExpr) -&gt; CmmLit -&gt; CmmExpr
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24%21"><span class="hs-operator hs-var">$!</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkIntCLit"><span class="hs-identifier hs-var">mkIntCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010380"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010379"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-187"></span><span>
</span><span id="line-188"></span><span class="annot"><a href="GHC.Cmm.Utils.html#zeroCLit"><span class="hs-identifier hs-type">zeroCLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-189"></span><span id="zeroCLit"><span class="annot"><span class="annottext">zeroCLit :: Platform -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#zeroCLit"><span class="hs-identifier hs-var hs-var">zeroCLit</span></a></span></span><span> </span><span id="local-6989586621681010376"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010376"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010376"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-190"></span><span>
</span><span id="line-191"></span><span class="annot"><a href="GHC.Cmm.Utils.html#zeroExpr"><span class="hs-identifier hs-type">zeroExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-192"></span><span id="zeroExpr"><span class="annot"><span class="annottext">zeroExpr :: Platform -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#zeroExpr"><span class="hs-identifier hs-var hs-var">zeroExpr</span></a></span></span><span> </span><span id="local-6989586621681010375"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010375"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#zeroCLit"><span class="hs-identifier hs-var">zeroCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010375"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-193"></span><span>
</span><span id="line-194"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mkWordCLit"><span class="hs-identifier hs-type">mkWordCLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-195"></span><span id="mkWordCLit"><span class="annot"><span class="annottext">mkWordCLit :: Platform -&gt; Integer -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkWordCLit"><span class="hs-identifier hs-var hs-var">mkWordCLit</span></a></span></span><span> </span><span id="local-6989586621681010374"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010374"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010373"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010373"><span class="hs-identifier hs-var">wd</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010373"><span class="hs-identifier hs-var">wd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010374"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-196"></span><span>
</span><span id="line-197"></span><span class="hs-comment">-- | We make a top-level decl for the string, and return a label pointing to it</span><span>
</span><span id="line-198"></span><span id="local-6989586621681010735"><span id="local-6989586621681010736"><span id="local-6989586621681010738"><span class="annot"><a href="GHC.Cmm.Utils.html#mkByteStringCLit"><span class="hs-identifier hs-type">mkByteStringCLit</span></a></span><span>
</span><span id="line-199"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier hs-type">ByteString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.html#GenCmmDecl"><span class="hs-identifier hs-type">GenCmmDecl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#GenCmmStatics"><span class="hs-identifier hs-type">GenCmmStatics</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010738"><span class="hs-identifier hs-type">raw</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="#local-6989586621681010736"><span class="hs-identifier hs-type">info</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010735"><span class="hs-identifier hs-type">stmt</span></a></span><span class="hs-special">)</span></span></span></span><span>
</span><span id="line-200"></span><span id="mkByteStringCLit"><span class="annot"><span class="annottext">mkByteStringCLit :: forall (raw :: Bool) info stmt.
CLabel
-&gt; ByteString -&gt; (CmmLit, GenCmmDecl (GenCmmStatics raw) info stmt)
</span><a href="GHC.Cmm.Utils.html#mkByteStringCLit"><span class="hs-identifier hs-var hs-var">mkByteStringCLit</span></a></span></span><span> </span><span id="local-6989586621681010370"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010370"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681010369"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681010369"><span class="hs-identifier hs-var">bytes</span></a></span></span><span>
</span><span id="line-201"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010370"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Section
-&gt; GenCmmStatics raw -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
forall d h g. Section -&gt; d -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-var">CmmData</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SectionType -&gt; CLabel -&gt; Section
</span><a href="GHC.Cmm.html#Section"><span class="hs-identifier hs-var">Section</span></a></span><span> </span><span class="annot"><span class="annottext">SectionType
</span><a href="#local-6989586621681010365"><span class="hs-identifier hs-var">sec</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010370"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(GenCmmStatics raw -&gt; GenCmmDecl (GenCmmStatics raw) info stmt)
-&gt; GenCmmStatics raw -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics raw
forall (rawOnly :: Bool).
CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics rawOnly
</span><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-var">CmmStaticsRaw</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010370"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">ByteString -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmString"><span class="hs-identifier hs-var">CmmString</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681010369"><span class="hs-identifier hs-var">bytes</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-202"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-203"></span><span>    </span><span class="hs-comment">-- This can not happen for String literals (as there \NUL is replaced by</span><span>
</span><span id="line-204"></span><span>    </span><span class="hs-comment">-- C0 80). However, it can happen with Addr# literals.</span><span>
</span><span id="line-205"></span><span>    </span><span id="local-6989586621681010365"><span class="annot"><span class="annottext">sec :: SectionType
</span><a href="#local-6989586621681010365"><span class="hs-identifier hs-var hs-var">sec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Word8
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">Word8 -&gt; ByteString -&gt; Bool
</span><a href="../../bytestring/src/Data.ByteString.html#elem"><span class="hs-operator hs-var">`BS.elem`</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681010369"><span class="hs-identifier hs-var">bytes</span></a></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">SectionType
</span><a href="GHC.Cmm.html#ReadOnlyData"><span class="hs-identifier hs-var">ReadOnlyData</span></a></span><span> </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">SectionType
</span><a href="GHC.Cmm.html#CString"><span class="hs-identifier hs-var">CString</span></a></span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span class="hs-comment">-- | We make a top-level decl for the embedded binary file, and return a label pointing to it</span><span>
</span><span id="line-208"></span><span id="local-6989586621681010721"><span id="local-6989586621681010722"><span id="local-6989586621681010723"><span class="annot"><a href="GHC.Cmm.Utils.html#mkFileEmbedLit"><span class="hs-identifier hs-type">mkFileEmbedLit</span></a></span><span>
</span><span id="line-209"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.html#GenCmmDecl"><span class="hs-identifier hs-type">GenCmmDecl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#GenCmmStatics"><span class="hs-identifier hs-type">GenCmmStatics</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010723"><span class="hs-identifier hs-type">raw</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="#local-6989586621681010722"><span class="hs-identifier hs-type">info</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010721"><span class="hs-identifier hs-type">stmt</span></a></span><span class="hs-special">)</span></span></span></span><span>
</span><span id="line-210"></span><span id="mkFileEmbedLit"><span class="annot"><span class="annottext">mkFileEmbedLit :: forall (raw :: Bool) info stmt.
CLabel
-&gt; String -&gt; (CmmLit, GenCmmDecl (GenCmmStatics raw) info stmt)
</span><a href="GHC.Cmm.Utils.html#mkFileEmbedLit"><span class="hs-identifier hs-var hs-var">mkFileEmbedLit</span></a></span></span><span> </span><span id="local-6989586621681010358"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010358"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681010357"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621681010357"><span class="hs-identifier hs-var">path</span></a></span></span><span>
</span><span id="line-211"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010358"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Section
-&gt; GenCmmStatics raw -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
forall d h g. Section -&gt; d -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-var">CmmData</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SectionType -&gt; CLabel -&gt; Section
</span><a href="GHC.Cmm.html#Section"><span class="hs-identifier hs-var">Section</span></a></span><span> </span><span class="annot"><span class="annottext">SectionType
</span><a href="GHC.Cmm.html#ReadOnlyData"><span class="hs-identifier hs-var">ReadOnlyData</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010358"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics raw
forall (rawOnly :: Bool).
CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics rawOnly
</span><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-var">CmmStaticsRaw</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010358"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmFileEmbed"><span class="hs-identifier hs-var">CmmFileEmbed</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621681010357"><span class="hs-identifier hs-var">path</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-212"></span><span>
</span><span id="line-213"></span><span>
</span><span id="line-214"></span><span class="hs-comment">-- | Build a data-segment data block</span><span>
</span><span id="line-215"></span><span id="local-6989586621681010715"><span id="local-6989586621681010716"><span id="local-6989586621681010717"><span class="annot"><a href="GHC.Cmm.Utils.html#mkDataLits"><span class="hs-identifier hs-type">mkDataLits</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#Section"><span class="hs-identifier hs-type">Section</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#GenCmmDecl"><span class="hs-identifier hs-type">GenCmmDecl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#GenCmmStatics"><span class="hs-identifier hs-type">GenCmmStatics</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010717"><span class="hs-identifier hs-type">raw</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="#local-6989586621681010716"><span class="hs-identifier hs-type">info</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010715"><span class="hs-identifier hs-type">stmt</span></a></span></span></span></span><span>
</span><span id="line-216"></span><span id="mkDataLits"><span class="annot"><span class="annottext">mkDataLits :: forall (raw :: Bool) info stmt.
Section
-&gt; CLabel -&gt; [CmmLit] -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
</span><a href="GHC.Cmm.Utils.html#mkDataLits"><span class="hs-identifier hs-var hs-var">mkDataLits</span></a></span></span><span> </span><span id="local-6989586621681010355"><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681010355"><span class="hs-identifier hs-var">section</span></a></span></span><span> </span><span id="local-6989586621681010354"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010354"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681010353"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681010353"><span class="hs-identifier hs-var">lits</span></a></span></span><span>
</span><span id="line-217"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Section
-&gt; GenCmmStatics raw -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
forall d h g. Section -&gt; d -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-var">CmmData</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681010355"><span class="hs-identifier hs-var">section</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics raw
forall (rawOnly :: Bool).
CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics rawOnly
</span><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-var">CmmStaticsRaw</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010354"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">([CmmStatic] -&gt; GenCmmStatics raw)
-&gt; [CmmStatic] -&gt; GenCmmStatics raw
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmStatic) -&gt; [CmmLit] -&gt; [CmmStatic]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681010353"><span class="hs-identifier hs-var">lits</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-218"></span><span>
</span><span id="line-219"></span><span id="local-6989586621681010707"><span id="local-6989586621681010708"><span id="local-6989586621681010709"><span class="annot"><a href="GHC.Cmm.Utils.html#mkRODataLits"><span class="hs-identifier hs-type">mkRODataLits</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#GenCmmDecl"><span class="hs-identifier hs-type">GenCmmDecl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#GenCmmStatics"><span class="hs-identifier hs-type">GenCmmStatics</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010709"><span class="hs-identifier hs-type">raw</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="#local-6989586621681010708"><span class="hs-identifier hs-type">info</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010707"><span class="hs-identifier hs-type">stmt</span></a></span></span></span></span><span>
</span><span id="line-220"></span><span class="hs-comment">-- Build a read-only data block</span><span>
</span><span id="line-221"></span><span id="mkRODataLits"><span class="annot"><span class="annottext">mkRODataLits :: forall (raw :: Bool) info stmt.
CLabel -&gt; [CmmLit] -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
</span><a href="GHC.Cmm.Utils.html#mkRODataLits"><span class="hs-identifier hs-var hs-var">mkRODataLits</span></a></span></span><span> </span><span id="local-6989586621681010350"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010350"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681010349"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681010349"><span class="hs-identifier hs-var">lits</span></a></span></span><span>
</span><span id="line-222"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Section
-&gt; CLabel -&gt; [CmmLit] -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
forall (raw :: Bool) info stmt.
Section
-&gt; CLabel -&gt; [CmmLit] -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
</span><a href="GHC.Cmm.Utils.html#mkDataLits"><span class="hs-identifier hs-var">mkDataLits</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681010348"><span class="hs-identifier hs-var">section</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010350"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681010349"><span class="hs-identifier hs-var">lits</span></a></span><span>
</span><span id="line-223"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-224"></span><span>    </span><span id="local-6989586621681010348"><span class="annot"><span class="annottext">section :: Section
</span><a href="#local-6989586621681010348"><span class="hs-identifier hs-var hs-var">section</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; Bool) -&gt; [CmmLit] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#any"><span class="hs-identifier hs-var">any</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; Bool
</span><a href="#local-6989586621681010346"><span class="hs-identifier hs-var">needsRelocation</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681010349"><span class="hs-identifier hs-var">lits</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SectionType -&gt; CLabel -&gt; Section
</span><a href="GHC.Cmm.html#Section"><span class="hs-identifier hs-var">Section</span></a></span><span> </span><span class="annot"><span class="annottext">SectionType
</span><a href="GHC.Cmm.html#RelocatableReadOnlyData"><span class="hs-identifier hs-var">RelocatableReadOnlyData</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010350"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-225"></span><span>            </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SectionType -&gt; CLabel -&gt; Section
</span><a href="GHC.Cmm.html#Section"><span class="hs-identifier hs-var">Section</span></a></span><span> </span><span class="annot"><span class="annottext">SectionType
</span><a href="GHC.Cmm.html#ReadOnlyData"><span class="hs-identifier hs-var">ReadOnlyData</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010350"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-226"></span><span>    </span><span id="local-6989586621681010346"><span class="annot"><span class="annottext">needsRelocation :: CmmLit -&gt; Bool
</span><a href="#local-6989586621681010346"><span class="hs-identifier hs-var hs-var">needsRelocation</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-227"></span><span>    </span><span class="annot"><a href="#local-6989586621681010346"><span class="hs-identifier hs-var">needsRelocation</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-type">CmmLabelOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-228"></span><span>    </span><span class="annot"><a href="#local-6989586621681010346"><span class="hs-identifier hs-var">needsRelocation</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-229"></span><span>
</span><span id="line-230"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mkStgWordCLit"><span class="hs-identifier hs-type">mkStgWordCLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#StgWord"><span class="hs-identifier hs-type">StgWord</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-231"></span><span id="mkStgWordCLit"><span class="annot"><span class="annottext">mkStgWordCLit :: Platform -&gt; StgWord -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkStgWordCLit"><span class="hs-identifier hs-var hs-var">mkStgWordCLit</span></a></span></span><span> </span><span id="local-6989586621681010343"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010343"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010342"><span class="annot"><span class="annottext">StgWord
</span><a href="#local-6989586621681010342"><span class="hs-identifier hs-var">wd</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgWord -&gt; Integer
</span><a href="GHC.Runtime.Heap.Layout.html#fromStgWord"><span class="hs-identifier hs-var">fromStgWord</span></a></span><span> </span><span class="annot"><span class="annottext">StgWord
</span><a href="#local-6989586621681010342"><span class="hs-identifier hs-var">wd</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010343"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-232"></span><span>
</span><span id="line-233"></span><span class="annot"><a href="GHC.Cmm.Utils.html#packHalfWordsCLit"><span class="hs-identifier hs-type">packHalfWordsCLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#StgHalfWord"><span class="hs-identifier hs-type">StgHalfWord</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#StgHalfWord"><span class="hs-identifier hs-type">StgHalfWord</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-234"></span><span class="hs-comment">-- Make a single word literal in which the lower_half_word is</span><span>
</span><span id="line-235"></span><span class="hs-comment">-- at the lower address, and the upper_half_word is at the</span><span>
</span><span id="line-236"></span><span class="hs-comment">-- higher address</span><span>
</span><span id="line-237"></span><span class="hs-comment">-- ToDo: consider using half-word lits instead</span><span>
</span><span id="line-238"></span><span class="hs-comment">--       but be careful: that's vulnerable when reversed</span><span>
</span><span id="line-239"></span><span id="packHalfWordsCLit"><span class="annot"><span class="annottext">packHalfWordsCLit :: Platform -&gt; StgHalfWord -&gt; StgHalfWord -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#packHalfWordsCLit"><span class="hs-identifier hs-var hs-var">packHalfWordsCLit</span></a></span></span><span> </span><span id="local-6989586621681010340"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010340"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010339"><span class="annot"><span class="annottext">StgHalfWord
</span><a href="#local-6989586621681010339"><span class="hs-identifier hs-var">lower_half_word</span></a></span></span><span> </span><span id="local-6989586621681010338"><span class="annot"><span class="annottext">StgHalfWord
</span><a href="#local-6989586621681010338"><span class="hs-identifier hs-var">upper_half_word</span></a></span></span><span>
</span><span id="line-240"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ByteOrder
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformByteOrder"><span class="hs-identifier hs-var hs-var">platformByteOrder</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010340"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-241"></span><span>       </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#BigEndian"><span class="hs-identifier hs-var">BigEndian</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkWordCLit"><span class="hs-identifier hs-var">mkWordCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010340"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010335"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="GHC.Runtime.Heap.Layout.html#halfWordSizeInBits"><span class="hs-identifier hs-var">halfWordSizeInBits</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010340"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010331"><span class="hs-identifier hs-var">u</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-242"></span><span>       </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#LittleEndian"><span class="hs-identifier hs-var">LittleEndian</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkWordCLit"><span class="hs-identifier hs-var">mkWordCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010340"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010335"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010331"><span class="hs-identifier hs-var">u</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="GHC.Runtime.Heap.Layout.html#halfWordSizeInBits"><span class="hs-identifier hs-var">halfWordSizeInBits</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010340"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-243"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010335"><span class="annot"><span class="annottext">l :: Integer
</span><a href="#local-6989586621681010335"><span class="hs-identifier hs-var hs-var">l</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgHalfWord -&gt; Integer
</span><a href="GHC.Runtime.Heap.Layout.html#fromStgHalfWord"><span class="hs-identifier hs-var">fromStgHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">StgHalfWord
</span><a href="#local-6989586621681010339"><span class="hs-identifier hs-var">lower_half_word</span></a></span><span>
</span><span id="line-244"></span><span>          </span><span id="local-6989586621681010331"><span class="annot"><span class="annottext">u :: Integer
</span><a href="#local-6989586621681010331"><span class="hs-identifier hs-var hs-var">u</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgHalfWord -&gt; Integer
</span><a href="GHC.Runtime.Heap.Layout.html#fromStgHalfWord"><span class="hs-identifier hs-var">fromStgHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">StgHalfWord
</span><a href="#local-6989586621681010338"><span class="hs-identifier hs-var">upper_half_word</span></a></span><span>
</span><span id="line-245"></span><span>
</span><span id="line-246"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-247"></span><span class="hs-comment">--</span><span>
</span><span id="line-248"></span><span class="hs-comment">--      CmmExpr</span><span>
</span><span id="line-249"></span><span class="hs-comment">--</span><span>
</span><span id="line-250"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-251"></span><span>
</span><span id="line-252"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mkLblExpr"><span class="hs-identifier hs-type">mkLblExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-253"></span><span id="mkLblExpr"><span class="annot"><span class="annottext">mkLblExpr :: CLabel -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#mkLblExpr"><span class="hs-identifier hs-var hs-var">mkLblExpr</span></a></span></span><span> </span><span id="local-6989586621681010328"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010328"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010328"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-254"></span><span>
</span><span id="line-255"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExpr"><span class="hs-identifier hs-type">cmmOffsetExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-256"></span><span class="hs-comment">-- assumes base and offset have the same CmmType</span><span>
</span><span id="line-257"></span><span id="cmmOffsetExpr"><span class="annot"><span class="annottext">cmmOffsetExpr :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetExpr"><span class="hs-identifier hs-var hs-var">cmmOffsetExpr</span></a></span></span><span> </span><span id="local-6989586621681010327"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010327"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010326"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010326"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681010325"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010325"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffset"><span class="hs-identifier hs-var">cmmOffset</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010327"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010326"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int
forall a. Num a =&gt; Integer -&gt; a
</span><a href="../../base/src/GHC.Num.html#fromInteger"><span class="hs-identifier hs-var">fromInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010325"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-258"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExpr"><span class="hs-identifier hs-var">cmmOffsetExpr</span></a></span><span> </span><span id="local-6989586621681010324"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010324"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010323"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010323"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681010322"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010322"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_Add"><span class="hs-identifier hs-var">MO_Add</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Width
</span><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier hs-var">cmmExprWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010324"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010323"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010323"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010322"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-259"></span><span>
</span><span id="line-260"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffset"><span class="hs-identifier hs-type">cmmOffset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-261"></span><span id="cmmOffset"><span class="annot"><span class="annottext">cmmOffset :: Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffset"><span class="hs-identifier hs-var hs-var">cmmOffset</span></a></span></span><span> </span><span id="local-6989586621681010318"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010318"><span class="hs-identifier hs-var">_platform</span></a></span></span><span> </span><span id="local-6989586621681010317"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010317"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010317"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-262"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffset"><span class="hs-identifier hs-var">cmmOffset</span></a></span><span> </span><span id="local-6989586621681010316"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010316"><span class="hs-identifier hs-var">platform</span></a></span></span><span>  </span><span id="local-6989586621681010315"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010315"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681010314"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010314"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010315"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-263"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621681010312"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010312"><span class="hs-identifier hs-var">reg</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier hs-var">cmmRegOff</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010312"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010314"><span class="hs-identifier hs-var">byte_off</span></a></span><span>
</span><span id="line-264"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681010310"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010310"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681010309"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010309"><span class="hs-identifier hs-var">m</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier hs-var">cmmRegOff</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010310"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010309"><span class="hs-identifier hs-var">m</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010314"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-265"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span id="local-6989586621681010307"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681010307"><span class="hs-identifier hs-var">lit</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-var">cmmOffsetLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681010307"><span class="hs-identifier hs-var">lit</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010314"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-266"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span id="local-6989586621681010305"><span class="annot"><span class="annottext">Area
</span><a href="#local-6989586621681010305"><span class="hs-identifier hs-var">area</span></a></span></span><span> </span><span id="local-6989586621681010304"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010304"><span class="hs-identifier hs-var">off</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Area -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-var">CmmStackSlot</span></a></span><span> </span><span class="annot"><span class="annottext">Area
</span><a href="#local-6989586621681010305"><span class="hs-identifier hs-var">area</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010304"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010314"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-267"></span><span>  </span><span class="hs-comment">-- note stack area offsets increase towards lower addresses</span><span>
</span><span id="line-268"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Add"><span class="hs-identifier hs-type">MO_Add</span></a></span><span> </span><span id="local-6989586621681010303"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010303"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span id="local-6989586621681010302"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010302"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681010301"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010301"><span class="hs-identifier hs-var">byte_off1</span></a></span></span><span> </span><span id="local-6989586621681010300"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010300"><span class="hs-identifier hs-var">_rep</span></a></span></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-269"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_Add"><span class="hs-identifier hs-var">MO_Add</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010303"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010302"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010301"><span class="hs-identifier hs-var">byte_off1</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010314"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010303"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-270"></span><span>   </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_Add"><span class="hs-identifier hs-var">MO_Add</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010299"><span class="hs-identifier hs-var">width</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010315"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010314"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010299"><span class="hs-identifier hs-var">width</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-271"></span><span>         </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010299"><span class="annot"><span class="annottext">width :: Width
</span><a href="#local-6989586621681010299"><span class="hs-identifier hs-var hs-var">width</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Width
</span><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier hs-var">cmmExprWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010316"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010315"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-272"></span><span>
</span><span id="line-273"></span><span class="hs-comment">-- Smart constructor for CmmRegOff.  Same caveats as cmmOffset above.</span><span>
</span><span id="line-274"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier hs-type">cmmRegOff</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-275"></span><span id="cmmRegOff"><span class="annot"><span class="annottext">cmmRegOff :: CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier hs-var hs-var">cmmRegOff</span></a></span></span><span> </span><span id="local-6989586621681010298"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010298"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010298"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-276"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier hs-var">cmmRegOff</span></a></span><span> </span><span id="local-6989586621681010297"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010297"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681010296"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010296"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-var">CmmRegOff</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010297"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010296"><span class="hs-identifier hs-var">byte_off</span></a></span><span>
</span><span id="line-277"></span><span>
</span><span id="line-278"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-type">cmmOffsetLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-279"></span><span id="cmmOffsetLit"><span class="annot"><span class="annottext">cmmOffsetLit :: CmmLit -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-var hs-var">cmmOffsetLit</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span id="local-6989586621681010295"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010295"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span>      </span><span id="local-6989586621681010294"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010294"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmLabelOff"><span class="hs-identifier hs-var">cmmLabelOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010295"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010294"><span class="hs-identifier hs-var">byte_off</span></a></span><span>
</span><span id="line-280"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-var">cmmOffsetLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-type">CmmLabelOff</span></a></span><span> </span><span id="local-6989586621681010293"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010293"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span id="local-6989586621681010292"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010292"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681010291"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010291"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmLabelOff"><span class="hs-identifier hs-var">cmmLabelOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010293"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010292"><span class="hs-identifier hs-var">m</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010291"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-281"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-var">cmmOffsetLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-type">CmmLabelDiffOff</span></a></span><span> </span><span id="local-6989586621681010289"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010289"><span class="hs-identifier hs-var">l1</span></a></span></span><span> </span><span id="local-6989586621681010288"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010288"><span class="hs-identifier hs-var">l2</span></a></span></span><span> </span><span id="local-6989586621681010287"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010287"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621681010286"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010286"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681010285"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010285"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span>
</span><span id="line-282"></span><span>                                        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; CLabel -&gt; Int -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-var">CmmLabelDiffOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010289"><span class="hs-identifier hs-var">l1</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010288"><span class="hs-identifier hs-var">l2</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010287"><span class="hs-identifier hs-var">m</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010285"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010286"><span class="hs-identifier hs-var">w</span></a></span><span>
</span><span id="line-283"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-var">cmmOffsetLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681010284"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010284"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621681010283"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010283"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-special">)</span><span>    </span><span id="local-6989586621681010282"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010282"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010284"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010282"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010283"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-284"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-var">cmmOffsetLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span>                 </span><span id="local-6989586621681010281"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010281"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; CmmLit
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;cmmOffsetLit&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010281"><span class="hs-identifier hs-var">byte_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-285"></span><span>
</span><span id="line-286"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLabelOff"><span class="hs-identifier hs-type">cmmLabelOff</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-287"></span><span class="hs-comment">-- Smart constructor for CmmLabelOff</span><span>
</span><span id="line-288"></span><span id="cmmLabelOff"><span class="annot"><span class="annottext">cmmLabelOff :: CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmLabelOff"><span class="hs-identifier hs-var hs-var">cmmLabelOff</span></a></span></span><span> </span><span id="local-6989586621681010278"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010278"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010278"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-289"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLabelOff"><span class="hs-identifier hs-var">cmmLabelOff</span></a></span><span> </span><span id="local-6989586621681010277"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010277"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681010276"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010276"><span class="hs-identifier hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-var">CmmLabelOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010277"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010276"><span class="hs-identifier hs-var">byte_off</span></a></span><span>
</span><span id="line-290"></span><span>
</span><span id="line-291"></span><span class="hs-comment">-- | Useful for creating an index into an array, with a statically known offset.</span><span>
</span><span id="line-292"></span><span class="hs-comment">-- The type is the element type; used for making the multiplier</span><span>
</span><span id="line-293"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmIndex"><span class="hs-identifier hs-type">cmmIndex</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span>
</span><span id="line-294"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span>       </span><span class="hs-comment">-- Width w</span><span>
</span><span id="line-295"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>     </span><span class="hs-comment">-- Address of vector of items of width w</span><span>
</span><span id="line-296"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>         </span><span class="hs-comment">-- Which element of the vector (0 based)</span><span>
</span><span id="line-297"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>     </span><span class="hs-comment">-- Address of i'th element</span><span>
</span><span id="line-298"></span><span id="cmmIndex"><span class="annot"><span class="annottext">cmmIndex :: Platform -&gt; Width -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmIndex"><span class="hs-identifier hs-var hs-var">cmmIndex</span></a></span></span><span> </span><span id="local-6989586621681010275"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010275"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010274"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010274"><span class="hs-identifier hs-var">width</span></a></span></span><span> </span><span id="local-6989586621681010273"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010273"><span class="hs-identifier hs-var">base</span></a></span></span><span> </span><span id="local-6989586621681010272"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010272"><span class="hs-identifier hs-var">idx</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffset"><span class="hs-identifier hs-var">cmmOffset</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010275"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010273"><span class="hs-identifier hs-var">base</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010272"><span class="hs-identifier hs-var">idx</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Int
</span><a href="GHC.Cmm.Type.html#widthInBytes"><span class="hs-identifier hs-var">widthInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010274"><span class="hs-identifier hs-var">width</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-299"></span><span>
</span><span id="line-300"></span><span class="hs-comment">-- | Useful for creating an index into an array, with an unknown offset.</span><span>
</span><span id="line-301"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmIndexExpr"><span class="hs-identifier hs-type">cmmIndexExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span>
</span><span id="line-302"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span>           </span><span class="hs-comment">-- Width w</span><span>
</span><span id="line-303"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>         </span><span class="hs-comment">-- Address of vector of items of width w</span><span>
</span><span id="line-304"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>         </span><span class="hs-comment">-- Which element of the vector (0 based)</span><span>
</span><span id="line-305"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>         </span><span class="hs-comment">-- Address of i'th element</span><span>
</span><span id="line-306"></span><span id="cmmIndexExpr"><span class="annot"><span class="annottext">cmmIndexExpr :: Platform -&gt; Width -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmIndexExpr"><span class="hs-identifier hs-var hs-var">cmmIndexExpr</span></a></span></span><span> </span><span id="local-6989586621681010269"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010269"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010268"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010268"><span class="hs-identifier hs-var">width</span></a></span></span><span> </span><span id="local-6989586621681010267"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010267"><span class="hs-identifier hs-var">base</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681010266"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010266"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmIndex"><span class="hs-identifier hs-var">cmmIndex</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010269"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010268"><span class="hs-identifier hs-var">width</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010267"><span class="hs-identifier hs-var">base</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int
forall a. Num a =&gt; Integer -&gt; a
</span><a href="../../base/src/GHC.Num.html#fromInteger"><span class="hs-identifier hs-var">fromInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010266"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-307"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmIndexExpr"><span class="hs-identifier hs-var">cmmIndexExpr</span></a></span><span> </span><span id="local-6989586621681010265"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010265"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010264"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010264"><span class="hs-identifier hs-var">width</span></a></span></span><span> </span><span id="local-6989586621681010263"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010263"><span class="hs-identifier hs-var">base</span></a></span></span><span> </span><span id="local-6989586621681010262"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010262"><span class="hs-identifier hs-var">idx</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-308"></span><span>  </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetExpr"><span class="hs-identifier hs-var">cmmOffsetExpr</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010265"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010263"><span class="hs-identifier hs-var">base</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010261"><span class="hs-identifier hs-var">byte_off</span></a></span><span>
</span><span id="line-309"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-310"></span><span>    </span><span id="local-6989586621681010260"><span class="annot"><span class="annottext">idx_w :: Width
</span><a href="#local-6989586621681010260"><span class="hs-identifier hs-var hs-var">idx_w</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Width
</span><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier hs-var">cmmExprWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010265"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010262"><span class="hs-identifier hs-var">idx</span></a></span><span>
</span><span id="line-311"></span><span>    </span><span id="local-6989586621681010261"><span class="annot"><span class="annottext">byte_off :: CmmExpr
</span><a href="#local-6989586621681010261"><span class="hs-identifier hs-var hs-var">byte_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_Shl"><span class="hs-identifier hs-var">MO_Shl</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010260"><span class="hs-identifier hs-var">idx_w</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010262"><span class="hs-identifier hs-var">idx</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#mkIntExpr"><span class="hs-identifier hs-var">mkIntExpr</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010265"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; Int
</span><a href="GHC.Cmm.Type.html#widthInLog"><span class="hs-identifier hs-var">widthInLog</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010264"><span class="hs-identifier hs-var">width</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-312"></span><span>
</span><span id="line-313"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLoadIndex"><span class="hs-identifier hs-type">cmmLoadIndex</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-314"></span><span id="cmmLoadIndex"><span class="annot"><span class="annottext">cmmLoadIndex :: Platform -&gt; CmmType -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmLoadIndex"><span class="hs-identifier hs-var hs-var">cmmLoadIndex</span></a></span></span><span> </span><span id="local-6989586621681010257"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010257"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010256"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681010256"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621681010255"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010255"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621681010254"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010254"><span class="hs-identifier hs-var">ix</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmIndex"><span class="hs-identifier hs-var">cmmIndex</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010257"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681010256"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010255"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010254"><span class="hs-identifier hs-var">ix</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681010256"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-315"></span><span>
</span><span id="line-316"></span><span class="hs-comment">-- The &quot;B&quot; variants take byte offsets</span><span>
</span><span id="line-317"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmRegOffB"><span class="hs-identifier hs-type">cmmRegOffB</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-318"></span><span id="cmmRegOffB"><span class="annot"><span class="annottext">cmmRegOffB :: CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOffB"><span class="hs-identifier hs-var hs-var">cmmRegOffB</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier hs-var">cmmRegOff</span></a></span><span>
</span><span id="line-319"></span><span>
</span><span id="line-320"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-type">cmmOffsetB</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-321"></span><span id="cmmOffsetB"><span class="annot"><span class="annottext">cmmOffsetB :: Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var hs-var">cmmOffsetB</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffset"><span class="hs-identifier hs-var">cmmOffset</span></a></span><span>
</span><span id="line-322"></span><span>
</span><span id="line-323"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExprB"><span class="hs-identifier hs-type">cmmOffsetExprB</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-324"></span><span id="cmmOffsetExprB"><span class="annot"><span class="annottext">cmmOffsetExprB :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetExprB"><span class="hs-identifier hs-var hs-var">cmmOffsetExprB</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetExpr"><span class="hs-identifier hs-var">cmmOffsetExpr</span></a></span><span>
</span><span id="line-325"></span><span>
</span><span id="line-326"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLabelOffB"><span class="hs-identifier hs-type">cmmLabelOffB</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-327"></span><span id="cmmLabelOffB"><span class="annot"><span class="annottext">cmmLabelOffB :: CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmLabelOffB"><span class="hs-identifier hs-var hs-var">cmmLabelOffB</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmLabelOff"><span class="hs-identifier hs-var">cmmLabelOff</span></a></span><span>
</span><span id="line-328"></span><span>
</span><span id="line-329"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLitB"><span class="hs-identifier hs-type">cmmOffsetLitB</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-330"></span><span id="cmmOffsetLitB"><span class="annot"><span class="annottext">cmmOffsetLitB :: CmmLit -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmOffsetLitB"><span class="hs-identifier hs-var hs-var">cmmOffsetLitB</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmOffsetLit"><span class="hs-identifier hs-var">cmmOffsetLit</span></a></span><span>
</span><span id="line-331"></span><span>
</span><span id="line-332"></span><span class="hs-comment">-----------------------</span><span>
</span><span id="line-333"></span><span class="hs-comment">-- The &quot;W&quot; variants take word offsets</span><span>
</span><span id="line-334"></span><span>
</span><span id="line-335"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExprW"><span class="hs-identifier hs-type">cmmOffsetExprW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-336"></span><span class="hs-comment">-- The second arg is a *word* offset; need to change it to bytes</span><span>
</span><span id="line-337"></span><span id="cmmOffsetExprW"><span class="annot"><span class="annottext">cmmOffsetExprW :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetExprW"><span class="hs-identifier hs-var hs-var">cmmOffsetExprW</span></a></span></span><span> </span><span id="local-6989586621681010250"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010250"><span class="hs-identifier hs-var">platform</span></a></span></span><span>  </span><span id="local-6989586621681010249"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010249"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681010248"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010248"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetW"><span class="hs-identifier hs-var">cmmOffsetW</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010250"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010249"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int
forall a. Num a =&gt; Integer -&gt; a
</span><a href="../../base/src/GHC.Num.html#fromInteger"><span class="hs-identifier hs-var">fromInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010248"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-338"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetExprW"><span class="hs-identifier hs-var">cmmOffsetExprW</span></a></span><span> </span><span id="local-6989586621681010247"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010247"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010246"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010246"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681010245"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010245"><span class="hs-identifier hs-var">wd_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmIndexExpr"><span class="hs-identifier hs-var">cmmIndexExpr</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010247"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010247"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010246"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010245"><span class="hs-identifier hs-var">wd_off</span></a></span><span>
</span><span id="line-339"></span><span>
</span><span id="line-340"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetW"><span class="hs-identifier hs-type">cmmOffsetW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-341"></span><span id="cmmOffsetW"><span class="annot"><span class="annottext">cmmOffsetW :: Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetW"><span class="hs-identifier hs-var hs-var">cmmOffsetW</span></a></span></span><span> </span><span id="local-6989586621681010243"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010243"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010242"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010242"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681010241"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010241"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var">cmmOffsetB</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010243"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010242"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Int
forall a. Num a =&gt; Platform -&gt; a -&gt; a
</span><a href="GHC.Runtime.Heap.Layout.html#wordsToBytes"><span class="hs-identifier hs-var">wordsToBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010243"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010241"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-342"></span><span>
</span><span id="line-343"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmRegOffW"><span class="hs-identifier hs-type">cmmRegOffW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-344"></span><span id="cmmRegOffW"><span class="annot"><span class="annottext">cmmRegOffW :: Platform -&gt; CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOffW"><span class="hs-identifier hs-var hs-var">cmmRegOffW</span></a></span></span><span> </span><span id="local-6989586621681010239"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010239"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010238"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010238"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681010237"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010237"><span class="hs-identifier hs-var">wd_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOffB"><span class="hs-identifier hs-var">cmmRegOffB</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010238"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Int
forall a. Num a =&gt; Platform -&gt; a -&gt; a
</span><a href="GHC.Runtime.Heap.Layout.html#wordsToBytes"><span class="hs-identifier hs-var">wordsToBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010239"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010237"><span class="hs-identifier hs-var">wd_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-345"></span><span>
</span><span id="line-346"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOffsetLitW"><span class="hs-identifier hs-type">cmmOffsetLitW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-347"></span><span id="cmmOffsetLitW"><span class="annot"><span class="annottext">cmmOffsetLitW :: Platform -&gt; CmmLit -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmOffsetLitW"><span class="hs-identifier hs-var hs-var">cmmOffsetLitW</span></a></span></span><span> </span><span id="local-6989586621681010236"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010236"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010235"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681010235"><span class="hs-identifier hs-var">lit</span></a></span></span><span> </span><span id="local-6989586621681010234"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010234"><span class="hs-identifier hs-var">wd_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmOffsetLitB"><span class="hs-identifier hs-var">cmmOffsetLitB</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681010235"><span class="hs-identifier hs-var">lit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Int
forall a. Num a =&gt; Platform -&gt; a -&gt; a
</span><a href="GHC.Runtime.Heap.Layout.html#wordsToBytes"><span class="hs-identifier hs-var">wordsToBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010236"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010234"><span class="hs-identifier hs-var">wd_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-348"></span><span>
</span><span id="line-349"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLabelOffW"><span class="hs-identifier hs-type">cmmLabelOffW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-350"></span><span id="cmmLabelOffW"><span class="annot"><span class="annottext">cmmLabelOffW :: Platform -&gt; CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmLabelOffW"><span class="hs-identifier hs-var hs-var">cmmLabelOffW</span></a></span></span><span> </span><span id="local-6989586621681010233"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010233"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010232"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010232"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681010231"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010231"><span class="hs-identifier hs-var">wd_off</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#cmmLabelOffB"><span class="hs-identifier hs-var">cmmLabelOffB</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010232"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Int
forall a. Num a =&gt; Platform -&gt; a -&gt; a
</span><a href="GHC.Runtime.Heap.Layout.html#wordsToBytes"><span class="hs-identifier hs-var">wordsToBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010233"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010231"><span class="hs-identifier hs-var">wd_off</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-351"></span><span>
</span><span id="line-352"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmLoadIndexW"><span class="hs-identifier hs-type">cmmLoadIndexW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-353"></span><span id="cmmLoadIndexW"><span class="annot"><span class="annottext">cmmLoadIndexW :: Platform -&gt; CmmExpr -&gt; Int -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmLoadIndexW"><span class="hs-identifier hs-var hs-var">cmmLoadIndexW</span></a></span></span><span> </span><span id="local-6989586621681010230"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010230"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010229"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010229"><span class="hs-identifier hs-var">base</span></a></span></span><span> </span><span id="local-6989586621681010228"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010228"><span class="hs-identifier hs-var">off</span></a></span></span><span> </span><span id="local-6989586621681010227"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681010227"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetW"><span class="hs-identifier hs-var">cmmOffsetW</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010230"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010229"><span class="hs-identifier hs-var">base</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010228"><span class="hs-identifier hs-var">off</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681010227"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-354"></span><span>
</span><span id="line-355"></span><span class="hs-comment">-----------------------</span><span>
</span><span id="line-356"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmULtWord"><span class="hs-identifier hs-type">cmmULtWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUGeWord"><span class="hs-identifier hs-type">cmmUGeWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUGtWord"><span class="hs-identifier hs-type">cmmUGtWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUShrWord"><span class="hs-identifier hs-type">cmmUShrWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-357"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmSLtWord"><span class="hs-identifier hs-type">cmmSLtWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-358"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmNeWord"><span class="hs-identifier hs-type">cmmNeWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmEqWord"><span class="hs-identifier hs-type">cmmEqWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-359"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmOrWord"><span class="hs-identifier hs-type">cmmOrWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmAndWord"><span class="hs-identifier hs-type">cmmAndWord</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-360"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmSubWord"><span class="hs-identifier hs-type">cmmSubWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmAddWord"><span class="hs-identifier hs-type">cmmAddWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmMulWord"><span class="hs-identifier hs-type">cmmMulWord</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmQuotWord"><span class="hs-identifier hs-type">cmmQuotWord</span></a></span><span>
</span><span id="line-361"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-362"></span><span id="cmmOrWord"><span class="annot"><span class="annottext">cmmOrWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOrWord"><span class="hs-identifier hs-var hs-var">cmmOrWord</span></a></span></span><span> </span><span id="local-6989586621681010226"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010226"><span class="hs-identifier hs-var">platform</span></a></span></span><span>  </span><span id="local-6989586621681010225"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010225"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010224"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010224"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordOr"><span class="hs-identifier hs-var">mo_wordOr</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010226"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010225"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010224"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-363"></span><span id="cmmAndWord"><span class="annot"><span class="annottext">cmmAndWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmAndWord"><span class="hs-identifier hs-var hs-var">cmmAndWord</span></a></span></span><span> </span><span id="local-6989586621681010222"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010222"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010221"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010221"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010220"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010220"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordAnd"><span class="hs-identifier hs-var">mo_wordAnd</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010222"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010221"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010220"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-364"></span><span id="cmmNeWord"><span class="annot"><span class="annottext">cmmNeWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmNeWord"><span class="hs-identifier hs-var hs-var">cmmNeWord</span></a></span></span><span> </span><span id="local-6989586621681010218"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010218"><span class="hs-identifier hs-var">platform</span></a></span></span><span>  </span><span id="local-6989586621681010217"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010217"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010216"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010216"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordNe"><span class="hs-identifier hs-var">mo_wordNe</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010218"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010217"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010216"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-365"></span><span id="cmmEqWord"><span class="annot"><span class="annottext">cmmEqWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmEqWord"><span class="hs-identifier hs-var hs-var">cmmEqWord</span></a></span></span><span> </span><span id="local-6989586621681010214"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010214"><span class="hs-identifier hs-var">platform</span></a></span></span><span>  </span><span id="local-6989586621681010213"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010213"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010212"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010212"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordEq"><span class="hs-identifier hs-var">mo_wordEq</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010214"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010213"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010212"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-366"></span><span id="cmmULtWord"><span class="annot"><span class="annottext">cmmULtWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmULtWord"><span class="hs-identifier hs-var hs-var">cmmULtWord</span></a></span></span><span> </span><span id="local-6989586621681010210"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010210"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010209"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010209"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010208"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010208"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordULt"><span class="hs-identifier hs-var">mo_wordULt</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010210"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010209"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010208"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-367"></span><span id="cmmUGeWord"><span class="annot"><span class="annottext">cmmUGeWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmUGeWord"><span class="hs-identifier hs-var hs-var">cmmUGeWord</span></a></span></span><span> </span><span id="local-6989586621681010206"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010206"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010205"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010205"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010204"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010204"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordUGe"><span class="hs-identifier hs-var">mo_wordUGe</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010206"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010205"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010204"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-368"></span><span id="cmmUGtWord"><span class="annot"><span class="annottext">cmmUGtWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmUGtWord"><span class="hs-identifier hs-var hs-var">cmmUGtWord</span></a></span></span><span> </span><span id="local-6989586621681010202"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010202"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010201"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010201"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010200"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010200"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordUGt"><span class="hs-identifier hs-var">mo_wordUGt</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010202"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010201"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010200"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-369"></span><span id="cmmSLtWord"><span class="annot"><span class="annottext">cmmSLtWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmSLtWord"><span class="hs-identifier hs-var hs-var">cmmSLtWord</span></a></span></span><span> </span><span id="local-6989586621681010198"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010198"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010197"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010197"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010196"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010196"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordSLt"><span class="hs-identifier hs-var">mo_wordSLt</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010198"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010197"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010196"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-370"></span><span id="cmmUShrWord"><span class="annot"><span class="annottext">cmmUShrWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmUShrWord"><span class="hs-identifier hs-var hs-var">cmmUShrWord</span></a></span></span><span> </span><span id="local-6989586621681010194"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010194"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010193"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010193"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010192"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010192"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordUShr"><span class="hs-identifier hs-var">mo_wordUShr</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010194"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010193"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010192"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-371"></span><span id="cmmAddWord"><span class="annot"><span class="annottext">cmmAddWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmAddWord"><span class="hs-identifier hs-var hs-var">cmmAddWord</span></a></span></span><span> </span><span id="local-6989586621681010190"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010190"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010189"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010189"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010188"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010188"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordAdd"><span class="hs-identifier hs-var">mo_wordAdd</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010190"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010189"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010188"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-372"></span><span id="cmmSubWord"><span class="annot"><span class="annottext">cmmSubWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmSubWord"><span class="hs-identifier hs-var hs-var">cmmSubWord</span></a></span></span><span> </span><span id="local-6989586621681010186"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010186"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010185"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010185"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010184"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010184"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordSub"><span class="hs-identifier hs-var">mo_wordSub</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010186"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010185"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010184"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-373"></span><span id="cmmMulWord"><span class="annot"><span class="annottext">cmmMulWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmMulWord"><span class="hs-identifier hs-var hs-var">cmmMulWord</span></a></span></span><span> </span><span id="local-6989586621681010182"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010182"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010181"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010181"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010180"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010180"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordMul"><span class="hs-identifier hs-var">mo_wordMul</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010182"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010181"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010180"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-374"></span><span id="cmmQuotWord"><span class="annot"><span class="annottext">cmmQuotWord :: Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmQuotWord"><span class="hs-identifier hs-var hs-var">cmmQuotWord</span></a></span></span><span> </span><span id="local-6989586621681010178"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010178"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010177"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010177"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621681010176"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010176"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#mo_wordUQuot"><span class="hs-identifier hs-var">mo_wordUQuot</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010178"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010177"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010176"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-375"></span><span>
</span><span id="line-376"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmNegate"><span class="hs-identifier hs-type">cmmNegate</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-377"></span><span id="cmmNegate"><span class="annot"><span class="annottext">cmmNegate :: Platform -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmNegate"><span class="hs-identifier hs-var hs-var">cmmNegate</span></a></span></span><span> </span><span id="local-6989586621681010174"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010174"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-378"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681010173"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010173"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621681010172"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010172"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-379"></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">-</span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681010173"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010172"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-380"></span><span>   </span><span id="local-6989586621681010171"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010171"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_S_Neg"><span class="hs-identifier hs-var">MO_S_Neg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Width
</span><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier hs-var">cmmExprWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010174"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010171"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010171"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-381"></span><span>
</span><span id="line-382"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmToWord"><span class="hs-identifier hs-type">cmmToWord</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-383"></span><span id="cmmToWord"><span class="annot"><span class="annottext">cmmToWord :: Platform -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmToWord"><span class="hs-identifier hs-var hs-var">cmmToWord</span></a></span></span><span> </span><span id="local-6989586621681010169"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010169"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010168"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010168"><span class="hs-identifier hs-var">e</span></a></span></span><span>
</span><span id="line-384"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010167"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010166"><span class="hs-identifier hs-var">word</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010168"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-385"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_UU_Conv"><span class="hs-identifier hs-var">MO_UU_Conv</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010167"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681010166"><span class="hs-identifier hs-var">word</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010168"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-386"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-387"></span><span>    </span><span id="local-6989586621681010167"><span class="annot"><span class="annottext">w :: Width
</span><a href="#local-6989586621681010167"><span class="hs-identifier hs-var hs-var">w</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; Width
</span><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier hs-var">cmmExprWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010169"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010168"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-388"></span><span>    </span><span id="local-6989586621681010166"><span class="annot"><span class="annottext">word :: Width
</span><a href="#local-6989586621681010166"><span class="hs-identifier hs-var hs-var">word</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010169"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-389"></span><span>
</span><span id="line-390"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmMkAssign"><span class="hs-identifier hs-type">cmmMkAssign</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-391"></span><span id="cmmMkAssign"><span class="annot"><span class="annottext">cmmMkAssign :: Platform -&gt; CmmExpr -&gt; Unique -&gt; (CmmNode O O, CmmExpr)
</span><a href="GHC.Cmm.Utils.html#cmmMkAssign"><span class="hs-identifier hs-var hs-var">cmmMkAssign</span></a></span></span><span> </span><span id="local-6989586621681010164"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010164"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681010163"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010163"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621681010162"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681010162"><span class="hs-identifier hs-var">uq</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-392"></span><span>  </span><span class="hs-keyword">let</span><span> </span><span class="hs-glyph">!</span><span id="local-6989586621681010161"><span class="annot"><span class="annottext">ty :: CmmType
</span><a href="#local-6989586621681010161"><span class="hs-identifier hs-var hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010164"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010163"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-393"></span><span>      </span><span id="local-6989586621681010159"><span class="annot"><span class="annottext">reg :: CmmReg
</span><a href="#local-6989586621681010159"><span class="hs-identifier hs-var hs-var">reg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LocalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-var">CmmLocal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Unique -&gt; CmmType -&gt; LocalReg
</span><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-var">LocalReg</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681010162"><span class="hs-identifier hs-var">uq</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681010161"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-394"></span><span>  </span><span class="hs-keyword">in</span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr -&gt; CmmNode O O
</span><a href="GHC.Cmm.Node.html#CmmAssign"><span class="hs-identifier hs-var">CmmAssign</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010159"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010163"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010159"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-395"></span><span>
</span><span id="line-396"></span><span>
</span><span id="line-397"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-398"></span><span class="hs-comment">--</span><span>
</span><span id="line-399"></span><span class="hs-comment">--      CmmExpr predicates</span><span>
</span><span id="line-400"></span><span class="hs-comment">--</span><span>
</span><span id="line-401"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-402"></span><span>
</span><span id="line-403"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier hs-type">isTrivialCmmExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-404"></span><span id="isTrivialCmmExpr"><span class="annot"><span class="annottext">isTrivialCmmExpr :: CmmExpr -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier hs-var hs-var">isTrivialCmmExpr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-405"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier hs-var">isTrivialCmmExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-406"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier hs-var">isTrivialCmmExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-407"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier hs-var">isTrivialCmmExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-408"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier hs-var">isTrivialCmmExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-409"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isTrivialCmmExpr"><span class="hs-identifier hs-var">isTrivialCmmExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span class="annot"><span class="annottext">Area
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Bool
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;isTrivialCmmExpr CmmStackSlot&quot;</span></span><span>
</span><span id="line-410"></span><span>
</span><span id="line-411"></span><span class="annot"><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-type">hasNoGlobalRegs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-412"></span><span id="hasNoGlobalRegs"><span class="annot"><span class="annottext">hasNoGlobalRegs :: CmmExpr -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var hs-var">hasNoGlobalRegs</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span id="local-6989586621681010155"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010155"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var">hasNoGlobalRegs</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010155"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-413"></span><span class="annot"><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var">hasNoGlobalRegs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681010154"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681010154"><span class="hs-identifier hs-var">es</span></a></span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmExpr -&gt; Bool) -&gt; [CmmExpr] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#all"><span class="hs-identifier hs-var">all</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var">hasNoGlobalRegs</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681010154"><span class="hs-identifier hs-var">es</span></a></span><span>
</span><span id="line-414"></span><span class="annot"><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var">hasNoGlobalRegs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-415"></span><span class="annot"><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var">hasNoGlobalRegs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-416"></span><span class="annot"><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var">hasNoGlobalRegs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-417"></span><span class="annot"><a href="GHC.Cmm.Utils.html#hasNoGlobalRegs"><span class="hs-identifier hs-var">hasNoGlobalRegs</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-418"></span><span>
</span><span id="line-419"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isLit"><span class="hs-identifier hs-type">isLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-420"></span><span id="isLit"><span class="annot"><span class="annottext">isLit :: CmmExpr -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#isLit"><span class="hs-identifier hs-var hs-var">isLit</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-421"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isLit"><span class="hs-identifier hs-var">isLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-422"></span><span>
</span><span id="line-423"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isComparisonExpr"><span class="hs-identifier hs-type">isComparisonExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-424"></span><span id="isComparisonExpr"><span class="annot"><span class="annottext">isComparisonExpr :: CmmExpr -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#isComparisonExpr"><span class="hs-identifier hs-var hs-var">isComparisonExpr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span id="local-6989586621681010152"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681010152"><span class="hs-identifier hs-var">op</span></a></span></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Bool
</span><a href="GHC.Cmm.MachOp.html#isComparisonMachOp"><span class="hs-identifier hs-var">isComparisonMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681010152"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-425"></span><span class="annot"><a href="GHC.Cmm.Utils.html#isComparisonExpr"><span class="hs-identifier hs-var">isComparisonExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-426"></span><span>
</span><span id="line-427"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-428"></span><span class="hs-comment">--</span><span>
</span><span id="line-429"></span><span class="hs-comment">--      Tagging</span><span>
</span><span id="line-430"></span><span class="hs-comment">--</span><span>
</span><span id="line-431"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-432"></span><span>
</span><span id="line-433"></span><span class="hs-comment">-- Tag bits mask</span><span>
</span><span id="line-434"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmTagMask"><span class="hs-identifier hs-type">cmmTagMask</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmPointerMask"><span class="hs-identifier hs-type">cmmPointerMask</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-435"></span><span id="cmmTagMask"><span class="annot"><span class="annottext">cmmTagMask :: DynFlags -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmTagMask"><span class="hs-identifier hs-var hs-var">cmmTagMask</span></a></span></span><span> </span><span id="local-6989586621681010150"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010150"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#mkIntExpr"><span class="hs-identifier hs-var">mkIntExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010150"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#tAG_MASK"><span class="hs-identifier hs-var">tAG_MASK</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010150"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-436"></span><span id="cmmPointerMask"><span class="annot"><span class="annottext">cmmPointerMask :: DynFlags -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmPointerMask"><span class="hs-identifier hs-var hs-var">cmmPointerMask</span></a></span></span><span> </span><span id="local-6989586621681010147"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010147"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#mkIntExpr"><span class="hs-identifier hs-var">mkIntExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010147"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Int
forall a. Bits a =&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#complement"><span class="hs-identifier hs-var">complement</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#tAG_MASK"><span class="hs-identifier hs-var">tAG_MASK</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010147"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-437"></span><span>
</span><span id="line-438"></span><span class="hs-comment">-- Used to untag a possibly tagged pointer</span><span>
</span><span id="line-439"></span><span class="hs-comment">-- A static label need not be untagged</span><span>
</span><span id="line-440"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUntag"><span class="hs-identifier hs-type">cmmUntag</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmIsTagged"><span class="hs-identifier hs-type">cmmIsTagged</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmConstrTag1"><span class="hs-identifier hs-type">cmmConstrTag1</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-441"></span><span id="cmmUntag"><span class="annot"><span class="annottext">cmmUntag :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmUntag"><span class="hs-identifier hs-var hs-var">cmmUntag</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681010145"><span class="annot"><span class="annottext">e :: CmmExpr
</span><a href="#local-6989586621681010145"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010145"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-442"></span><span class="hs-comment">-- Default case</span><span>
</span><span id="line-443"></span><span class="annot"><a href="GHC.Cmm.Utils.html#cmmUntag"><span class="hs-identifier hs-var">cmmUntag</span></a></span><span> </span><span id="local-6989586621681010144"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010144"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010143"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010143"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmAndWord"><span class="hs-identifier hs-var">cmmAndWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010142"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010143"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmPointerMask"><span class="hs-identifier hs-var">cmmPointerMask</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010144"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-444"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010142"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681010142"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010144"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-445"></span><span>
</span><span id="line-446"></span><span class="hs-comment">-- Test if a closure pointer is untagged</span><span>
</span><span id="line-447"></span><span id="cmmIsTagged"><span class="annot"><span class="annottext">cmmIsTagged :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmIsTagged"><span class="hs-identifier hs-var hs-var">cmmIsTagged</span></a></span></span><span> </span><span id="local-6989586621681010141"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010141"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010140"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010140"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmNeWord"><span class="hs-identifier hs-var">cmmNeWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010139"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmAndWord"><span class="hs-identifier hs-var">cmmAndWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010139"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010140"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmTagMask"><span class="hs-identifier hs-var">cmmTagMask</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010141"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#zeroExpr"><span class="hs-identifier hs-var">zeroExpr</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010139"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-448"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010139"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681010139"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010141"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-449"></span><span>
</span><span id="line-450"></span><span class="hs-comment">-- Get constructor tag, but one based.</span><span>
</span><span id="line-451"></span><span id="cmmConstrTag1"><span class="annot"><span class="annottext">cmmConstrTag1 :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmConstrTag1"><span class="hs-identifier hs-var hs-var">cmmConstrTag1</span></a></span></span><span> </span><span id="local-6989586621681010138"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010138"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010137"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010137"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmAndWord"><span class="hs-identifier hs-var">cmmAndWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010136"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010137"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmTagMask"><span class="hs-identifier hs-var">cmmTagMask</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010138"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-452"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010136"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681010136"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010138"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-453"></span><span>
</span><span id="line-454"></span><span>
</span><span id="line-455"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-456"></span><span class="hs-comment">-- Overlap and usage</span><span>
</span><span id="line-457"></span><span>
</span><span id="line-458"></span><span class="hs-comment">-- | Returns True if the two STG registers overlap on the specified</span><span>
</span><span id="line-459"></span><span class="hs-comment">-- platform, in the sense that writing to one will clobber the</span><span>
</span><span id="line-460"></span><span class="hs-comment">-- other. This includes the case that the two registers are the same</span><span>
</span><span id="line-461"></span><span class="hs-comment">-- STG register. See Note [Overlapping global registers] for details.</span><span>
</span><span id="line-462"></span><span class="annot"><a href="GHC.Cmm.Utils.html#regsOverlap"><span class="hs-identifier hs-type">regsOverlap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-463"></span><span id="regsOverlap"><span class="annot"><span class="annottext">regsOverlap :: Platform -&gt; CmmReg -&gt; CmmReg -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#regsOverlap"><span class="hs-identifier hs-var hs-var">regsOverlap</span></a></span></span><span> </span><span id="local-6989586621681010135"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010135"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681010133"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010133"><span class="hs-identifier hs-var">g</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681010132"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010132"><span class="hs-identifier hs-var">g'</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-464"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681010131"><span class="annot"><span class="annottext">RealReg
</span><a href="#local-6989586621681010131"><span class="hs-identifier hs-var">real</span></a></span></span><span>  </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; GlobalReg -&gt; Maybe RealReg
</span><a href="GHC.Platform.Regs.html#globalRegMaybe"><span class="hs-identifier hs-var">globalRegMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010135"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010133"><span class="hs-identifier hs-var">g</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-465"></span><span>    </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681010129"><span class="annot"><span class="annottext">RealReg
</span><a href="#local-6989586621681010129"><span class="hs-identifier hs-var">real'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; GlobalReg -&gt; Maybe RealReg
</span><a href="GHC.Platform.Regs.html#globalRegMaybe"><span class="hs-identifier hs-var">globalRegMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010135"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010132"><span class="hs-identifier hs-var">g'</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-466"></span><span>    </span><span class="annot"><span class="annottext">RealReg
</span><a href="#local-6989586621681010131"><span class="hs-identifier hs-var">real</span></a></span><span> </span><span class="annot"><span class="annottext">RealReg -&gt; RealReg -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">RealReg
</span><a href="#local-6989586621681010129"><span class="hs-identifier hs-var">real'</span></a></span><span>
</span><span id="line-467"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-468"></span><span class="annot"><a href="GHC.Cmm.Utils.html#regsOverlap"><span class="hs-identifier hs-var">regsOverlap</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681010128"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010128"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681010127"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010127"><span class="hs-identifier hs-var">reg'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010128"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmReg -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010127"><span class="hs-identifier hs-var">reg'</span></a></span><span>
</span><span id="line-469"></span><span>
</span><span id="line-470"></span><span class="hs-comment">-- | Returns True if the STG register is used by the expression, in</span><span>
</span><span id="line-471"></span><span class="hs-comment">-- the sense that a store to the register might affect the value of</span><span>
</span><span id="line-472"></span><span class="hs-comment">-- the expression.</span><span>
</span><span id="line-473"></span><span class="hs-comment">--</span><span>
</span><span id="line-474"></span><span class="hs-comment">-- We must check for overlapping registers and not just equal</span><span>
</span><span id="line-475"></span><span class="hs-comment">-- registers here, otherwise CmmSink may incorrectly reorder</span><span>
</span><span id="line-476"></span><span class="hs-comment">-- assignments that conflict due to overlap. See #10521 and Note</span><span>
</span><span id="line-477"></span><span class="hs-comment">-- [Overlapping global registers].</span><span>
</span><span id="line-478"></span><span class="annot"><a href="GHC.Cmm.Utils.html#regUsedIn"><span class="hs-identifier hs-type">regUsedIn</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-479"></span><span id="regUsedIn"><span class="annot"><span class="annottext">regUsedIn :: Platform -&gt; CmmReg -&gt; CmmExpr -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#regUsedIn"><span class="hs-identifier hs-var hs-var">regUsedIn</span></a></span></span><span> </span><span id="local-6989586621681010126"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010126"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr -&gt; Bool
</span><a href="#local-6989586621681010125"><span class="hs-identifier hs-var">regUsedIn_</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-480"></span><span>  </span><span class="annot"><span class="annottext">CmmReg
</span><span class="hs-identifier">_</span></span><span>   </span><span id="local-6989586621681010125"><span class="annot"><span class="annottext">regUsedIn_ :: CmmReg -&gt; CmmExpr -&gt; Bool
</span><a href="#local-6989586621681010125"><span class="hs-operator hs-var hs-var">`regUsedIn_`</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-481"></span><span>  </span><span id="local-6989586621681010124"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010124"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><a href="#local-6989586621681010125"><span class="hs-operator hs-var">`regUsedIn_`</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span id="local-6989586621681010123"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010123"><span class="hs-identifier hs-var">e</span></a></span></span><span>  </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010124"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr -&gt; Bool
</span><a href="#local-6989586621681010125"><span class="hs-operator hs-var">`regUsedIn_`</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010123"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-482"></span><span>  </span><span id="local-6989586621681010122"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010122"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><a href="#local-6989586621681010125"><span class="hs-operator hs-var">`regUsedIn_`</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621681010121"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010121"><span class="hs-identifier hs-var">reg'</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmReg -&gt; CmmReg -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#regsOverlap"><span class="hs-identifier hs-var">regsOverlap</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010126"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010122"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010121"><span class="hs-identifier hs-var">reg'</span></a></span><span>
</span><span id="line-483"></span><span>  </span><span id="local-6989586621681010120"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010120"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><a href="#local-6989586621681010125"><span class="hs-operator hs-var">`regUsedIn_`</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681010119"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010119"><span class="hs-identifier hs-var">reg'</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmReg -&gt; CmmReg -&gt; Bool
</span><a href="GHC.Cmm.Utils.html#regsOverlap"><span class="hs-identifier hs-var">regsOverlap</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010126"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010120"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010119"><span class="hs-identifier hs-var">reg'</span></a></span><span>
</span><span id="line-484"></span><span>  </span><span id="local-6989586621681010118"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010118"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><a href="#local-6989586621681010125"><span class="hs-operator hs-var">`regUsedIn_`</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681010117"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681010117"><span class="hs-identifier hs-var">es</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmExpr -&gt; Bool) -&gt; [CmmExpr] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#any"><span class="hs-identifier hs-var">any</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681010118"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr -&gt; Bool
</span><a href="#local-6989586621681010125"><span class="hs-operator hs-var">`regUsedIn_`</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681010117"><span class="hs-identifier hs-var">es</span></a></span><span>
</span><span id="line-485"></span><span>  </span><span class="annot"><span class="annottext">CmmReg
</span><span class="hs-identifier">_</span></span><span>   </span><span class="annot"><a href="#local-6989586621681010125"><span class="hs-operator hs-var">`regUsedIn_`</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span class="annot"><span class="annottext">Area
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-486"></span><span>
</span><span id="line-487"></span><span class="hs-comment">--------------------------------------------</span><span>
</span><span id="line-488"></span><span class="hs-comment">--</span><span>
</span><span id="line-489"></span><span class="hs-comment">--        mkLiveness</span><span>
</span><span id="line-490"></span><span class="hs-comment">--</span><span>
</span><span id="line-491"></span><span class="hs-comment">---------------------------------------------</span><span>
</span><span id="line-492"></span><span>
</span><span id="line-493"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mkLiveness"><span class="hs-identifier hs-type">mkLiveness</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#Liveness"><span class="hs-identifier hs-type">Liveness</span></a></span><span>
</span><span id="line-494"></span><span id="mkLiveness"><span class="annot"><span class="annottext">mkLiveness :: Platform -&gt; [LocalReg] -&gt; Liveness
</span><a href="GHC.Cmm.Utils.html#mkLiveness"><span class="hs-identifier hs-var hs-var">mkLiveness</span></a></span></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-495"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mkLiveness"><span class="hs-identifier hs-var">mkLiveness</span></a></span><span> </span><span id="local-6989586621681010116"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010116"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681010115"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681010115"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621681010114"><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681010114"><span class="hs-identifier hs-var">regs</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-496"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Liveness
</span><a href="#local-6989586621681010113"><span class="hs-identifier hs-var">bits</span></a></span><span> </span><span class="annot"><span class="annottext">Liveness -&gt; Liveness -&gt; Liveness
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [LocalReg] -&gt; Liveness
</span><a href="GHC.Cmm.Utils.html#mkLiveness"><span class="hs-identifier hs-var">mkLiveness</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010116"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681010114"><span class="hs-identifier hs-var">regs</span></a></span><span>
</span><span id="line-497"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-498"></span><span>    </span><span id="local-6989586621681010112"><span class="annot"><span class="annottext">word_size :: Int
</span><a href="#local-6989586621681010112"><span class="hs-identifier hs-var hs-var">word_size</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010116"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-499"></span><span>    </span><span id="local-6989586621681010110"><span class="annot"><span class="annottext">sizeW :: Int
</span><a href="#local-6989586621681010110"><span class="hs-identifier hs-var hs-var">sizeW</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; Int
</span><a href="GHC.Cmm.Type.html#widthInBytes"><span class="hs-identifier hs-var">widthInBytes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LocalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier hs-var">localRegType</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681010115"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010112"><span class="hs-identifier hs-var">word_size</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-500"></span><span>            </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#quot"><span class="hs-operator hs-var">`quot`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010112"><span class="hs-identifier hs-var">word_size</span></a></span><span>
</span><span id="line-501"></span><span>            </span><span class="hs-comment">-- number of words, rounded up</span><span>
</span><span id="line-502"></span><span>    </span><span id="local-6989586621681010113"><span class="annot"><span class="annottext">bits :: Liveness
</span><a href="#local-6989586621681010113"><span class="hs-identifier hs-var hs-var">bits</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Bool -&gt; Liveness
forall a. Int -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010110"><span class="hs-identifier hs-var">sizeW</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681010106"><span class="hs-identifier hs-var">is_non_ptr</span></a></span><span> </span><span class="hs-comment">-- True &lt;=&gt; Non Ptr</span><span>
</span><span id="line-503"></span><span>
</span><span id="line-504"></span><span>    </span><span id="local-6989586621681010106"><span class="annot"><span class="annottext">is_non_ptr :: Bool
</span><a href="#local-6989586621681010106"><span class="hs-identifier hs-var hs-var">is_non_ptr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="annot"><span class="annottext">(Bool -&gt; Bool) -&gt; Bool -&gt; Bool
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isGcPtrType"><span class="hs-identifier hs-var">isGcPtrType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LocalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier hs-var">localRegType</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681010115"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-505"></span><span>
</span><span id="line-506"></span><span>
</span><span id="line-507"></span><span class="hs-comment">-- ============================================== -</span><span>
</span><span id="line-508"></span><span class="hs-comment">-- ============================================== -</span><span>
</span><span id="line-509"></span><span class="hs-comment">-- ============================================== -</span><span>
</span><span id="line-510"></span><span>
</span><span id="line-511"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-512"></span><span class="hs-comment">--</span><span>
</span><span id="line-513"></span><span class="hs-comment">--      Manipulating CmmGraphs</span><span>
</span><span id="line-514"></span><span class="hs-comment">--</span><span>
</span><span id="line-515"></span><span class="hs-comment">---------------------------------------------------</span><span>
</span><span id="line-516"></span><span>
</span><span id="line-517"></span><span id="local-6989586621681010675"><span id="local-6989586621681010678"><span class="annot"><a href="GHC.Cmm.Utils.html#modifyGraph"><span class="hs-identifier hs-type">modifyGraph</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Dataflow.Graph.html#Graph"><span class="hs-identifier hs-type">Graph</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010678"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Graph.html#Graph"><span class="hs-identifier hs-type">Graph</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010675"><span class="hs-identifier hs-type">n'</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#GenCmmGraph"><span class="hs-identifier hs-type">GenCmmGraph</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010678"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#GenCmmGraph"><span class="hs-identifier hs-type">GenCmmGraph</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010675"><span class="hs-identifier hs-type">n'</span></a></span></span></span><span>
</span><span id="line-518"></span><span id="modifyGraph"><span class="annot"><span class="annottext">modifyGraph :: forall (n :: Extensibility -&gt; Extensibility -&gt; *)
       (n' :: Extensibility -&gt; Extensibility -&gt; *).
(Graph n C C -&gt; Graph n' C C) -&gt; GenCmmGraph n -&gt; GenCmmGraph n'
</span><a href="GHC.Cmm.Utils.html#modifyGraph"><span class="hs-identifier hs-var hs-var">modifyGraph</span></a></span></span><span> </span><span id="local-6989586621681010103"><span class="annot"><span class="annottext">Graph n C C -&gt; Graph n' C C
</span><a href="#local-6989586621681010103"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621681010102"><span class="annot"><span class="annottext">GenCmmGraph n
</span><a href="#local-6989586621681010102"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph :: forall (n :: Extensibility -&gt; Extensibility -&gt; *).
BlockId -&gt; Graph n C C -&gt; GenCmmGraph n
</span><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">g_entry :: BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var">g_entry</span></a></span><span class="hs-glyph">=</span><span class="annot"><span class="annottext">GenCmmGraph n -&gt; BlockId
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var hs-var">g_entry</span></a></span><span> </span><span class="annot"><span class="annottext">GenCmmGraph n
</span><a href="#local-6989586621681010102"><span class="hs-identifier hs-var">g</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">g_graph :: Graph n' C C
</span><a href="GHC.Cmm.html#g_graph"><span class="hs-identifier hs-var">g_graph</span></a></span><span class="hs-glyph">=</span><span class="annot"><span class="annottext">Graph n C C -&gt; Graph n' C C
</span><a href="#local-6989586621681010103"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">GenCmmGraph n -&gt; Graph n C C
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; Graph n C C
</span><a href="GHC.Cmm.html#g_graph"><span class="hs-identifier hs-var hs-var">g_graph</span></a></span><span> </span><span class="annot"><span class="annottext">GenCmmGraph n
</span><a href="#local-6989586621681010102"><span class="hs-identifier hs-var">g</span></a></span><span class="hs-special">)</span><span class="hs-special">}</span><span>
</span><span id="line-519"></span><span>
</span><span id="line-520"></span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-type">toBlockMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Label.html#LabelMap"><span class="hs-identifier hs-type">LabelMap</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span>
</span><span id="line-521"></span><span id="toBlockMap"><span class="annot"><span class="annottext">toBlockMap :: CmmGraph -&gt; LabelMap CmmBlock
</span><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-var hs-var">toBlockMap</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">g_graph :: forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; Graph n C C
</span><a href="GHC.Cmm.html#g_graph"><span class="hs-identifier hs-var">g_graph</span></a></span><span class="hs-glyph">=</span><span class="annot"><a href="GHC.Cmm.Dataflow.Graph.html#GMany"><span class="hs-identifier hs-type">GMany</span></a></span><span> </span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode O C)
</span><a href="GHC.Cmm.Dataflow.Block.html#NothingO"><span class="hs-identifier hs-var">NothingO</span></a></span><span> </span><span id="local-6989586621681010095"><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010095"><span class="hs-identifier hs-var">body</span></a></span></span><span> </span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode C O)
</span><a href="GHC.Cmm.Dataflow.Block.html#NothingO"><span class="hs-identifier hs-var">NothingO</span></a></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010095"><span class="hs-identifier hs-var">body</span></a></span><span>
</span><span id="line-522"></span><span>
</span><span id="line-523"></span><span class="annot"><a href="GHC.Cmm.Utils.html#ofBlockMap"><span class="hs-identifier hs-type">ofBlockMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Label.html#LabelMap"><span class="hs-identifier hs-type">LabelMap</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span>
</span><span id="line-524"></span><span id="ofBlockMap"><span class="annot"><span class="annottext">ofBlockMap :: BlockId -&gt; LabelMap CmmBlock -&gt; CmmGraph
</span><a href="GHC.Cmm.Utils.html#ofBlockMap"><span class="hs-identifier hs-var hs-var">ofBlockMap</span></a></span></span><span> </span><span id="local-6989586621681010093"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681010093"><span class="hs-identifier hs-var">entry</span></a></span></span><span> </span><span id="local-6989586621681010092"><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010092"><span class="hs-identifier hs-var">bodyMap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph :: forall (n :: Extensibility -&gt; Extensibility -&gt; *).
BlockId -&gt; Graph n C C -&gt; GenCmmGraph n
</span><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">g_entry :: BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var">g_entry</span></a></span><span class="hs-glyph">=</span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681010093"><span class="hs-identifier hs-var">entry</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">g_graph :: Graph' Block CmmNode C C
</span><a href="GHC.Cmm.html#g_graph"><span class="hs-identifier hs-var">g_graph</span></a></span><span class="hs-glyph">=</span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode O C)
-&gt; LabelMap CmmBlock
-&gt; MaybeO C (Block CmmNode C O)
-&gt; Graph' Block CmmNode C C
forall (e :: Extensibility)
       (block :: (Extensibility -&gt; Extensibility -&gt; *)
                 -&gt; Extensibility -&gt; Extensibility -&gt; *)
       (n :: Extensibility -&gt; Extensibility -&gt; *) (x :: Extensibility).
MaybeO e (block n O C)
-&gt; Body' block n -&gt; MaybeO x (block n C O) -&gt; Graph' block n e x
</span><a href="GHC.Cmm.Dataflow.Graph.html#GMany"><span class="hs-identifier hs-var">GMany</span></a></span><span> </span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode O C)
forall t. MaybeO C t
</span><a href="GHC.Cmm.Dataflow.Block.html#NothingO"><span class="hs-identifier hs-var">NothingO</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010092"><span class="hs-identifier hs-var">bodyMap</span></a></span><span> </span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode C O)
forall t. MaybeO C t
</span><a href="GHC.Cmm.Dataflow.Block.html#NothingO"><span class="hs-identifier hs-var">NothingO</span></a></span><span class="hs-special">}</span><span>
</span><span id="line-525"></span><span>
</span><span id="line-526"></span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockList"><span class="hs-identifier hs-type">toBlockList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-527"></span><span id="toBlockList"><span class="annot"><span class="annottext">toBlockList :: CmmGraph -&gt; [CmmBlock]
</span><a href="GHC.Cmm.Utils.html#toBlockList"><span class="hs-identifier hs-var hs-var">toBlockList</span></a></span></span><span> </span><span id="local-6989586621681010091"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010091"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock -&gt; [CmmBlock]
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; [a]
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapElems"><span class="hs-identifier hs-var">mapElems</span></a></span><span> </span><span class="annot"><span class="annottext">(LabelMap CmmBlock -&gt; [CmmBlock])
-&gt; LabelMap CmmBlock -&gt; [CmmBlock]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; LabelMap CmmBlock
</span><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-var">toBlockMap</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010091"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-528"></span><span>
</span><span id="line-529"></span><span class="hs-comment">-- | like 'toBlockList', but the entry block always comes first</span><span>
</span><span id="line-530"></span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockListEntryFirst"><span class="hs-identifier hs-type">toBlockListEntryFirst</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-531"></span><span id="toBlockListEntryFirst"><span class="annot"><span class="annottext">toBlockListEntryFirst :: CmmGraph -&gt; [CmmBlock]
</span><a href="GHC.Cmm.Utils.html#toBlockListEntryFirst"><span class="hs-identifier hs-var hs-var">toBlockListEntryFirst</span></a></span></span><span> </span><span id="local-6989586621681010089"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010089"><span class="hs-identifier hs-var">g</span></a></span></span><span>
</span><span id="line-532"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock -&gt; Bool
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; Bool
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapNull"><span class="hs-identifier hs-var">mapNull</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010087"><span class="hs-identifier hs-var">m</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-533"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010086"><span class="hs-identifier hs-var">entry_block</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; [CmmBlock] -&gt; [CmmBlock]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010085"><span class="hs-identifier hs-var">others</span></a></span><span>
</span><span id="line-534"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-535"></span><span>    </span><span id="local-6989586621681010087"><span class="annot"><span class="annottext">m :: LabelMap CmmBlock
</span><a href="#local-6989586621681010087"><span class="hs-identifier hs-var hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; LabelMap CmmBlock
</span><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-var">toBlockMap</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010089"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-536"></span><span>    </span><span id="local-6989586621681010084"><span class="annot"><span class="annottext">entry_id :: BlockId
</span><a href="#local-6989586621681010084"><span class="hs-identifier hs-var hs-var">entry_id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; BlockId
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var hs-var">g_entry</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010089"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-537"></span><span>    </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681010086"><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010086"><span class="hs-identifier hs-var">entry_block</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap -&gt; LabelMap CmmBlock -&gt; Maybe CmmBlock
forall (map :: * -&gt; *) a.
IsMap map =&gt;
KeyOf map -&gt; map a -&gt; Maybe a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapLookup"><span class="hs-identifier hs-var">mapLookup</span></a></span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap
BlockId
</span><a href="#local-6989586621681010084"><span class="hs-identifier hs-var">entry_id</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010087"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-538"></span><span>    </span><span id="local-6989586621681010085"><span class="annot"><span class="annottext">others :: [CmmBlock]
</span><a href="#local-6989586621681010085"><span class="hs-identifier hs-var hs-var">others</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmBlock -&gt; Bool) -&gt; [CmmBlock] -&gt; [CmmBlock]
forall a. (a -&gt; Bool) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#filter"><span class="hs-identifier hs-var">filter</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; BlockId -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681010084"><span class="hs-identifier hs-var">entry_id</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(BlockId -&gt; Bool) -&gt; (CmmBlock -&gt; BlockId) -&gt; CmmBlock -&gt; Bool
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; BlockId
forall (thing :: Extensibility -&gt; Extensibility -&gt; *)
       (x :: Extensibility).
NonLocal thing =&gt;
thing C x -&gt; BlockId
</span><a href="GHC.Cmm.Dataflow.Graph.html#entryLabel"><span class="hs-identifier hs-var">entryLabel</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LabelMap CmmBlock -&gt; [CmmBlock]
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; [a]
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapElems"><span class="hs-identifier hs-var">mapElems</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010087"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-539"></span><span>
</span><span id="line-540"></span><span class="hs-comment">-- | Like 'toBlockListEntryFirst', but we strive to ensure that we order blocks</span><span>
</span><span id="line-541"></span><span class="hs-comment">-- so that the false case of a conditional jumps to the next block in the output</span><span>
</span><span id="line-542"></span><span class="hs-comment">-- list of blocks. This matches the way OldCmm blocks were output since in</span><span>
</span><span id="line-543"></span><span class="hs-comment">-- OldCmm the false case was a fallthrough, whereas in Cmm conditional branches</span><span>
</span><span id="line-544"></span><span class="hs-comment">-- have both true and false successors. Block ordering can make a big difference</span><span>
</span><span id="line-545"></span><span class="hs-comment">-- in performance in the LLVM backend. Note that we rely crucially on the order</span><span>
</span><span id="line-546"></span><span class="hs-comment">-- of successors returned for CmmCondBranch by the NonLocal instance for CmmNode</span><span>
</span><span id="line-547"></span><span class="hs-comment">-- defined in &quot;GHC.Cmm.Node&quot;. -GBM</span><span>
</span><span id="line-548"></span><span class="annot"><a href="GHC.Cmm.Utils.html#toBlockListEntryFirstFalseFallthrough"><span class="hs-identifier hs-type">toBlockListEntryFirstFalseFallthrough</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-549"></span><span id="toBlockListEntryFirstFalseFallthrough"><span class="annot"><span class="annottext">toBlockListEntryFirstFalseFallthrough :: CmmGraph -&gt; [CmmBlock]
</span><a href="GHC.Cmm.Utils.html#toBlockListEntryFirstFalseFallthrough"><span class="hs-identifier hs-var hs-var">toBlockListEntryFirstFalseFallthrough</span></a></span></span><span> </span><span id="local-6989586621681010080"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010080"><span class="hs-identifier hs-var">g</span></a></span></span><span>
</span><span id="line-550"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock -&gt; Bool
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; Bool
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapNull"><span class="hs-identifier hs-var">mapNull</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010079"><span class="hs-identifier hs-var">m</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-551"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LabelSet -&gt; [CmmBlock] -&gt; [CmmBlock]
</span><a href="#local-6989586621681010078"><span class="hs-identifier hs-var">dfs</span></a></span><span> </span><span class="annot"><span class="annottext">LabelSet
forall set. IsSet set =&gt; set
</span><a href="GHC.Cmm.Dataflow.Collections.html#setEmpty"><span class="hs-identifier hs-var">setEmpty</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010076"><span class="hs-identifier hs-var">entry_block</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-552"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-553"></span><span>    </span><span id="local-6989586621681010079"><span class="annot"><span class="annottext">m :: LabelMap CmmBlock
</span><a href="#local-6989586621681010079"><span class="hs-identifier hs-var hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; LabelMap CmmBlock
</span><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-var">toBlockMap</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010080"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-554"></span><span>    </span><span id="local-6989586621681010075"><span class="annot"><span class="annottext">entry_id :: BlockId
</span><a href="#local-6989586621681010075"><span class="hs-identifier hs-var hs-var">entry_id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; BlockId
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var hs-var">g_entry</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010080"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-555"></span><span>    </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681010076"><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010076"><span class="hs-identifier hs-var">entry_block</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap -&gt; LabelMap CmmBlock -&gt; Maybe CmmBlock
forall (map :: * -&gt; *) a.
IsMap map =&gt;
KeyOf map -&gt; map a -&gt; Maybe a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapLookup"><span class="hs-identifier hs-var">mapLookup</span></a></span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap
BlockId
</span><a href="#local-6989586621681010075"><span class="hs-identifier hs-var">entry_id</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010079"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-556"></span><span>
</span><span id="line-557"></span><span>    </span><span class="annot"><a href="#local-6989586621681010078"><span class="hs-identifier hs-type">dfs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Label.html#LabelSet"><span class="hs-identifier hs-type">LabelSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-558"></span><span>    </span><span id="local-6989586621681010078"><span class="annot"><span class="annottext">dfs :: LabelSet -&gt; [CmmBlock] -&gt; [CmmBlock]
</span><a href="#local-6989586621681010078"><span class="hs-identifier hs-var hs-var">dfs</span></a></span></span><span> </span><span class="annot"><span class="annottext">LabelSet
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-559"></span><span>    </span><span class="annot"><a href="#local-6989586621681010078"><span class="hs-identifier hs-var">dfs</span></a></span><span> </span><span id="local-6989586621681010074"><span class="annot"><span class="annottext">LabelSet
</span><a href="#local-6989586621681010074"><span class="hs-identifier hs-var">visited</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681010073"><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010073"><span class="hs-identifier hs-var">block</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621681010072"><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010072"><span class="hs-identifier hs-var">bs</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-560"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">ElemOf LabelSet
BlockId
</span><a href="#local-6989586621681010071"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">ElemOf LabelSet -&gt; LabelSet -&gt; Bool
forall set. IsSet set =&gt; ElemOf set -&gt; set -&gt; Bool
</span><a href="GHC.Cmm.Dataflow.Collections.html#setMember"><span class="hs-operator hs-var">`setMember`</span></a></span><span> </span><span class="annot"><span class="annottext">LabelSet
</span><a href="#local-6989586621681010074"><span class="hs-identifier hs-var">visited</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LabelSet -&gt; [CmmBlock] -&gt; [CmmBlock]
</span><a href="#local-6989586621681010078"><span class="hs-identifier hs-var">dfs</span></a></span><span> </span><span class="annot"><span class="annottext">LabelSet
</span><a href="#local-6989586621681010074"><span class="hs-identifier hs-var">visited</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010072"><span class="hs-identifier hs-var">bs</span></a></span><span>
</span><span id="line-561"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010073"><span class="hs-identifier hs-var">block</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; [CmmBlock] -&gt; [CmmBlock]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">LabelSet -&gt; [CmmBlock] -&gt; [CmmBlock]
</span><a href="#local-6989586621681010078"><span class="hs-identifier hs-var">dfs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ElemOf LabelSet -&gt; LabelSet -&gt; LabelSet
forall set. IsSet set =&gt; ElemOf set -&gt; set -&gt; set
</span><a href="GHC.Cmm.Dataflow.Collections.html#setInsert"><span class="hs-identifier hs-var">setInsert</span></a></span><span> </span><span class="annot"><span class="annottext">ElemOf LabelSet
BlockId
</span><a href="#local-6989586621681010071"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">LabelSet
</span><a href="#local-6989586621681010074"><span class="hs-identifier hs-var">visited</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010068"><span class="hs-identifier hs-var">bs'</span></a></span><span>
</span><span id="line-562"></span><span>      </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010071"><span class="annot"><span class="annottext">id :: BlockId
</span><a href="#local-6989586621681010071"><span class="hs-identifier hs-var hs-var">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; BlockId
forall (thing :: Extensibility -&gt; Extensibility -&gt; *)
       (x :: Extensibility).
NonLocal thing =&gt;
thing C x -&gt; BlockId
</span><a href="GHC.Cmm.Dataflow.Graph.html#entryLabel"><span class="hs-identifier hs-var">entryLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010073"><span class="hs-identifier hs-var">block</span></a></span><span>
</span><span id="line-563"></span><span>            </span><span id="local-6989586621681010068"><span class="annot"><span class="annottext">bs' :: [CmmBlock]
</span><a href="#local-6989586621681010068"><span class="hs-identifier hs-var hs-var">bs'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(BlockId -&gt; [CmmBlock] -&gt; [CmmBlock])
-&gt; [CmmBlock] -&gt; [BlockId] -&gt; [CmmBlock]
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [CmmBlock] -&gt; [CmmBlock]
</span><a href="#local-6989586621681010066"><span class="hs-identifier hs-var">add_id</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010072"><span class="hs-identifier hs-var">bs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmBlock -&gt; [BlockId]
forall (thing :: Extensibility -&gt; Extensibility -&gt; *)
       (e :: Extensibility).
NonLocal thing =&gt;
thing e C -&gt; [BlockId]
</span><a href="GHC.Cmm.Dataflow.Graph.html#successors"><span class="hs-identifier hs-var">successors</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010073"><span class="hs-identifier hs-var">block</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-564"></span><span>            </span><span id="local-6989586621681010066"><span class="annot"><span class="annottext">add_id :: BlockId -&gt; [CmmBlock] -&gt; [CmmBlock]
</span><a href="#local-6989586621681010066"><span class="hs-identifier hs-var hs-var">add_id</span></a></span></span><span> </span><span id="local-6989586621681010064"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681010064"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span id="local-6989586621681010063"><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010063"><span class="hs-identifier hs-var">bs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap -&gt; LabelMap CmmBlock -&gt; Maybe CmmBlock
forall (map :: * -&gt; *) a.
IsMap map =&gt;
KeyOf map -&gt; map a -&gt; Maybe a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapLookup"><span class="hs-identifier hs-var">mapLookup</span></a></span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap
BlockId
</span><a href="#local-6989586621681010064"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010079"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-565"></span><span>                              </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681010062"><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010062"><span class="hs-identifier hs-var">b</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010062"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; [CmmBlock] -&gt; [CmmBlock]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010063"><span class="hs-identifier hs-var">bs</span></a></span><span>
</span><span id="line-566"></span><span>                              </span><span class="annot"><span class="annottext">Maybe CmmBlock
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010063"><span class="hs-identifier hs-var">bs</span></a></span><span>
</span><span id="line-567"></span><span>
</span><span id="line-568"></span><span class="annot"><a href="GHC.Cmm.Utils.html#ofBlockList"><span class="hs-identifier hs-type">ofBlockList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span>
</span><span id="line-569"></span><span id="ofBlockList"><span class="annot"><span class="annottext">ofBlockList :: BlockId -&gt; [CmmBlock] -&gt; CmmGraph
</span><a href="GHC.Cmm.Utils.html#ofBlockList"><span class="hs-identifier hs-var hs-var">ofBlockList</span></a></span></span><span> </span><span id="local-6989586621681010061"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681010061"><span class="hs-identifier hs-var">entry</span></a></span></span><span> </span><span id="local-6989586621681010060"><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010060"><span class="hs-identifier hs-var">blocks</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph :: forall (n :: Extensibility -&gt; Extensibility -&gt; *).
BlockId -&gt; Graph n C C -&gt; GenCmmGraph n
</span><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">g_entry :: BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var">g_entry</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681010061"><span class="hs-identifier hs-var">entry</span></a></span><span>
</span><span id="line-570"></span><span>                                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">g_graph :: Graph' Block CmmNode C C
</span><a href="GHC.Cmm.html#g_graph"><span class="hs-identifier hs-var">g_graph</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode O C)
-&gt; LabelMap CmmBlock
-&gt; MaybeO C (Block CmmNode C O)
-&gt; Graph' Block CmmNode C C
forall (e :: Extensibility)
       (block :: (Extensibility -&gt; Extensibility -&gt; *)
                 -&gt; Extensibility -&gt; Extensibility -&gt; *)
       (n :: Extensibility -&gt; Extensibility -&gt; *) (x :: Extensibility).
MaybeO e (block n O C)
-&gt; Body' block n -&gt; MaybeO x (block n C O) -&gt; Graph' block n e x
</span><a href="GHC.Cmm.Dataflow.Graph.html#GMany"><span class="hs-identifier hs-var">GMany</span></a></span><span> </span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode O C)
forall t. MaybeO C t
</span><a href="GHC.Cmm.Dataflow.Block.html#NothingO"><span class="hs-identifier hs-var">NothingO</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010059"><span class="hs-identifier hs-var">body</span></a></span><span> </span><span class="annot"><span class="annottext">MaybeO C (Block CmmNode C O)
forall t. MaybeO C t
</span><a href="GHC.Cmm.Dataflow.Block.html#NothingO"><span class="hs-identifier hs-var">NothingO</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-571"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010059"><span class="annot"><span class="annottext">body :: LabelMap CmmBlock
</span><a href="#local-6989586621681010059"><span class="hs-identifier hs-var hs-var">body</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmBlock -&gt; LabelMap CmmBlock -&gt; LabelMap CmmBlock)
-&gt; LabelMap CmmBlock -&gt; [CmmBlock] -&gt; LabelMap CmmBlock
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; LabelMap CmmBlock -&gt; LabelMap CmmBlock
forall (block :: Extensibility -&gt; Extensibility -&gt; *).
(NonLocal block, HasDebugCallStack) =&gt;
block C C -&gt; LabelMap (block C C) -&gt; LabelMap (block C C)
</span><a href="GHC.Cmm.Dataflow.Graph.html#addBlock"><span class="hs-identifier hs-var">addBlock</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
forall (block :: (Extensibility -&gt; Extensibility -&gt; *)
                 -&gt; Extensibility -&gt; Extensibility -&gt; *)
       (n :: Extensibility -&gt; Extensibility -&gt; *).
Body' block n
</span><a href="GHC.Cmm.Dataflow.Graph.html#emptyBody"><span class="hs-identifier hs-var">emptyBody</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681010060"><span class="hs-identifier hs-var">blocks</span></a></span><span>
</span><span id="line-572"></span><span>
</span><span id="line-573"></span><span class="annot"><a href="GHC.Cmm.Utils.html#bodyToBlockList"><span class="hs-identifier hs-type">bodyToBlockList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Graph.html#Body"><span class="hs-identifier hs-type">Body</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-574"></span><span id="bodyToBlockList"><span class="annot"><span class="annottext">bodyToBlockList :: LabelMap CmmBlock -&gt; [CmmBlock]
</span><a href="GHC.Cmm.Utils.html#bodyToBlockList"><span class="hs-identifier hs-var hs-var">bodyToBlockList</span></a></span></span><span> </span><span id="local-6989586621681010055"><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010055"><span class="hs-identifier hs-var">body</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock -&gt; [CmmBlock]
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; [a]
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapElems"><span class="hs-identifier hs-var">mapElems</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap CmmBlock
</span><a href="#local-6989586621681010055"><span class="hs-identifier hs-var">body</span></a></span><span>
</span><span id="line-575"></span><span>
</span><span id="line-576"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mapGraphNodes"><span class="hs-identifier hs-type">mapGraphNodes</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span>
</span><span id="line-577"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span>
</span><span id="line-578"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#O"><span class="hs-identifier hs-type">O</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-579"></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span>
</span><span id="line-580"></span><span id="mapGraphNodes"><span class="annot"><span class="annottext">mapGraphNodes :: (CmmNode C O -&gt; CmmNode C O, CmmNode O O -&gt; CmmNode O O,
 CmmNode O C -&gt; CmmNode O C)
-&gt; CmmGraph -&gt; CmmGraph
</span><a href="GHC.Cmm.Utils.html#mapGraphNodes"><span class="hs-identifier hs-var hs-var">mapGraphNodes</span></a></span></span><span> </span><span id="local-6989586621681010054"><span class="annot"><span class="annottext">funs :: (CmmNode C O -&gt; CmmNode C O, CmmNode O O -&gt; CmmNode O O,
 CmmNode O C -&gt; CmmNode O C)
</span><a href="#local-6989586621681010054"><span class="hs-identifier hs-var">funs</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span id="local-6989586621681010053"><span class="annot"><span class="annottext">CmmNode C O -&gt; CmmNode C O
</span><a href="#local-6989586621681010053"><span class="hs-identifier hs-var">mf</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">CmmNode O O -&gt; CmmNode O O
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">CmmNode O C -&gt; CmmNode O C
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681010052"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010052"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-581"></span><span>  </span><span class="annot"><span class="annottext">BlockId -&gt; LabelMap CmmBlock -&gt; CmmGraph
</span><a href="GHC.Cmm.Utils.html#ofBlockMap"><span class="hs-identifier hs-var">ofBlockMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmNode C O -&gt; BlockId
forall (thing :: Extensibility -&gt; Extensibility -&gt; *)
       (x :: Extensibility).
NonLocal thing =&gt;
thing C x -&gt; BlockId
</span><a href="GHC.Cmm.Dataflow.Graph.html#entryLabel"><span class="hs-identifier hs-var">entryLabel</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmNode C O -&gt; BlockId) -&gt; CmmNode C O -&gt; BlockId
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode C O -&gt; CmmNode C O
</span><a href="#local-6989586621681010053"><span class="hs-identifier hs-var">mf</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmNode C O -&gt; CmmNode C O) -&gt; CmmNode C O -&gt; CmmNode C O
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; CmmTickScope -&gt; CmmNode C O
</span><a href="GHC.Cmm.Node.html#CmmEntry"><span class="hs-identifier hs-var">CmmEntry</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmGraph -&gt; BlockId
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var hs-var">g_entry</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010052"><span class="hs-identifier hs-var">g</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmTickScope
</span><a href="GHC.Cmm.Node.html#GlobalScope"><span class="hs-identifier hs-var">GlobalScope</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(LabelMap CmmBlock -&gt; CmmGraph) -&gt; LabelMap CmmBlock -&gt; CmmGraph
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-582"></span><span>  </span><span class="annot"><span class="annottext">(CmmBlock -&gt; CmmBlock) -&gt; LabelMap CmmBlock -&gt; LabelMap CmmBlock
forall (map :: * -&gt; *) a b. IsMap map =&gt; (a -&gt; b) -&gt; map a -&gt; map b
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapMap"><span class="hs-identifier hs-var">mapMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmNode C O -&gt; CmmNode C O, CmmNode O O -&gt; CmmNode O O,
 CmmNode O C -&gt; CmmNode O C)
-&gt; CmmBlock -&gt; CmmBlock
forall (n :: Extensibility -&gt; Extensibility -&gt; *)
       (n' :: Extensibility -&gt; Extensibility -&gt; *) (e :: Extensibility)
       (x :: Extensibility).
(n C O -&gt; n' C O, n O O -&gt; n' O O, n O C -&gt; n' O C)
-&gt; Block n e x -&gt; Block n' e x
</span><a href="GHC.Cmm.Dataflow.Block.html#mapBlock3%27"><span class="hs-identifier hs-var">mapBlock3'</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmNode C O -&gt; CmmNode C O, CmmNode O O -&gt; CmmNode O O,
 CmmNode O C -&gt; CmmNode O C)
</span><a href="#local-6989586621681010054"><span class="hs-identifier hs-var">funs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(LabelMap CmmBlock -&gt; LabelMap CmmBlock)
-&gt; LabelMap CmmBlock -&gt; LabelMap CmmBlock
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; LabelMap CmmBlock
</span><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-var">toBlockMap</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010052"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-583"></span><span>
</span><span id="line-584"></span><span class="annot"><a href="GHC.Cmm.Utils.html#mapGraphNodes1"><span class="hs-identifier hs-type">mapGraphNodes1</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621681010634"><span class="annot"><a href="#local-6989586621681010634"><span class="hs-identifier hs-type">e</span></a></span></span><span> </span><span id="local-6989586621681010633"><span class="annot"><a href="#local-6989586621681010633"><span class="hs-identifier hs-type">x</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010634"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010633"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010634"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010633"><span class="hs-identifier hs-type">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span>
</span><span id="line-585"></span><span id="mapGraphNodes1"><span class="annot"><span class="annottext">mapGraphNodes1 :: (forall (e :: Extensibility) (x :: Extensibility).
 CmmNode e x -&gt; CmmNode e x)
-&gt; CmmGraph -&gt; CmmGraph
</span><a href="GHC.Cmm.Utils.html#mapGraphNodes1"><span class="hs-identifier hs-var hs-var">mapGraphNodes1</span></a></span></span><span> </span><span id="local-6989586621681010047"><span class="annot"><span class="annottext">forall (e :: Extensibility) (x :: Extensibility).
CmmNode e x -&gt; CmmNode e x
</span><a href="#local-6989586621681010047"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Graph' Block CmmNode C C -&gt; Graph' Block CmmNode C C)
-&gt; CmmGraph -&gt; CmmGraph
forall (n :: Extensibility -&gt; Extensibility -&gt; *)
       (n' :: Extensibility -&gt; Extensibility -&gt; *).
(Graph n C C -&gt; Graph n' C C) -&gt; GenCmmGraph n -&gt; GenCmmGraph n'
</span><a href="GHC.Cmm.Utils.html#modifyGraph"><span class="hs-identifier hs-var">modifyGraph</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(forall (e :: Extensibility) (x :: Extensibility).
 CmmNode e x -&gt; CmmNode e x)
-&gt; Graph' Block CmmNode C C -&gt; Graph' Block CmmNode C C
forall (n :: Extensibility -&gt; Extensibility -&gt; *)
       (n' :: Extensibility -&gt; Extensibility -&gt; *) (e :: Extensibility)
       (x :: Extensibility).
(forall (e1 :: Extensibility) (x1 :: Extensibility).
 n e1 x1 -&gt; n' e1 x1)
-&gt; Graph n e x -&gt; Graph n' e x
</span><a href="GHC.Cmm.Dataflow.Graph.html#mapGraph"><span class="hs-identifier hs-var">mapGraph</span></a></span><span> </span><span class="annot"><span class="annottext">forall (e :: Extensibility) (x :: Extensibility).
CmmNode e x -&gt; CmmNode e x
</span><a href="#local-6989586621681010047"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-586"></span><span>
</span><span id="line-587"></span><span>
</span><span id="line-588"></span><span id="local-6989586621681010626"><span class="annot"><a href="GHC.Cmm.Utils.html#foldlGraphBlocks"><span class="hs-identifier hs-type">foldlGraphBlocks</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621681010626"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621681010626"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621681010626"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621681010626"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-589"></span><span id="foldlGraphBlocks"><span class="annot"><span class="annottext">foldlGraphBlocks :: forall a. (a -&gt; CmmBlock -&gt; a) -&gt; a -&gt; CmmGraph -&gt; a
</span><a href="GHC.Cmm.Utils.html#foldlGraphBlocks"><span class="hs-identifier hs-var hs-var">foldlGraphBlocks</span></a></span></span><span> </span><span id="local-6989586621681010044"><span class="annot"><span class="annottext">a -&gt; CmmBlock -&gt; a
</span><a href="#local-6989586621681010044"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621681010043"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681010043"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span id="local-6989586621681010042"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010042"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; CmmBlock -&gt; a) -&gt; a -&gt; LabelMap CmmBlock -&gt; a
forall (map :: * -&gt; *) b a.
IsMap map =&gt;
(b -&gt; a -&gt; b) -&gt; b -&gt; map a -&gt; b
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapFoldl"><span class="hs-identifier hs-var">mapFoldl</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; CmmBlock -&gt; a
</span><a href="#local-6989586621681010044"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681010043"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">(LabelMap CmmBlock -&gt; a) -&gt; LabelMap CmmBlock -&gt; a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; LabelMap CmmBlock
</span><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-var">toBlockMap</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010042"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-590"></span><span>
</span><span id="line-591"></span><span class="annot"><a href="GHC.Cmm.Utils.html#revPostorder"><span class="hs-identifier hs-type">revPostorder</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGraph"><span class="hs-identifier hs-type">CmmGraph</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-592"></span><span id="revPostorder"><span class="annot"><span class="annottext">revPostorder :: CmmGraph -&gt; [CmmBlock]
</span><a href="GHC.Cmm.Utils.html#revPostorder"><span class="hs-identifier hs-var hs-var">revPostorder</span></a></span></span><span> </span><span id="local-6989586621681010040"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010040"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-pragma">{-# SCC</span><span> </span><span class="hs-pragma">&quot;revPostorder&quot;</span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-593"></span><span>    </span><span class="annot"><span class="annottext">LabelMap CmmBlock -&gt; BlockId -&gt; [CmmBlock]
forall (block :: Extensibility -&gt; Extensibility -&gt; *).
NonLocal block =&gt;
LabelMap (block C C) -&gt; BlockId -&gt; [block C C]
</span><a href="GHC.Cmm.Dataflow.Graph.html#revPostorderFrom"><span class="hs-identifier hs-var">revPostorderFrom</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmGraph -&gt; LabelMap CmmBlock
</span><a href="GHC.Cmm.Utils.html#toBlockMap"><span class="hs-identifier hs-var">toBlockMap</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010040"><span class="hs-identifier hs-var">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmGraph -&gt; BlockId
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var hs-var">g_entry</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010040"><span class="hs-identifier hs-var">g</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-594"></span><span>
</span><span id="line-595"></span><span class="hs-comment">-------------------------------------------------</span><span>
</span><span id="line-596"></span><span class="hs-comment">-- Tick utilities</span><span>
</span><span id="line-597"></span><span>
</span><span id="line-598"></span><span class="hs-comment">-- | Extract all tick annotations from the given block</span><span>
</span><span id="line-599"></span><span class="annot"><a href="GHC.Cmm.Utils.html#blockTicks"><span class="hs-identifier hs-type">blockTicks</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#Block"><span class="hs-identifier hs-type">Block</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#C"><span class="hs-identifier hs-type">C</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmTickish"><span class="hs-identifier hs-type">CmmTickish</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-600"></span><span id="blockTicks"><span class="annot"><span class="annottext">blockTicks :: CmmBlock -&gt; [CmmTickish]
</span><a href="GHC.Cmm.Utils.html#blockTicks"><span class="hs-identifier hs-var hs-var">blockTicks</span></a></span></span><span> </span><span id="local-6989586621681010038"><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010038"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CmmTickish] -&gt; [CmmTickish]
forall a. [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#reverse"><span class="hs-identifier hs-var">reverse</span></a></span><span> </span><span class="annot"><span class="annottext">([CmmTickish] -&gt; [CmmTickish]) -&gt; [CmmTickish] -&gt; [CmmTickish]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (e :: Extensibility) (x :: Extensibility).
 CmmNode e x -&gt; [CmmTickish] -&gt; [CmmTickish])
-&gt; forall (e :: Extensibility) (x :: Extensibility).
   Block CmmNode e x
   -&gt; IndexedCO e [CmmTickish] [CmmTickish]
   -&gt; IndexedCO x [CmmTickish] [CmmTickish]
forall (n :: Extensibility -&gt; Extensibility -&gt; *) a.
(forall (e :: Extensibility) (x :: Extensibility). n e x -&gt; a -&gt; a)
-&gt; forall (e :: Extensibility) (x :: Extensibility).
   Block n e x -&gt; IndexedCO e a a -&gt; IndexedCO x a a
</span><a href="GHC.Cmm.Dataflow.Block.html#foldBlockNodesF"><span class="hs-identifier hs-var">foldBlockNodesF</span></a></span><span> </span><span class="annot"><span class="annottext">forall (e :: Extensibility) (x :: Extensibility).
CmmNode e x -&gt; [CmmTickish] -&gt; [CmmTickish]
</span><a href="#local-6989586621681010035"><span class="hs-identifier hs-var">goStmt</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681010038"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-601"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681010033"><span id="local-6989586621681010034"><span class="annot"><a href="#local-6989586621681010035"><span class="hs-identifier hs-type">goStmt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010034"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681010033"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmTickish"><span class="hs-identifier hs-type">CmmTickish</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmTickish"><span class="hs-identifier hs-type">CmmTickish</span></a></span><span class="hs-special">]</span></span></span><span>
</span><span id="line-602"></span><span>        </span><span id="local-6989586621681010035"><span class="annot"><span class="annottext">goStmt :: forall (e :: Extensibility) (x :: Extensibility).
CmmNode e x -&gt; [CmmTickish] -&gt; [CmmTickish]
</span><a href="#local-6989586621681010035"><span class="hs-identifier hs-var hs-var">goStmt</span></a></span></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmTick"><span class="hs-identifier hs-type">CmmTick</span></a></span><span> </span><span id="local-6989586621681010029"><span class="annot"><span class="annottext">CmmTickish
</span><a href="#local-6989586621681010029"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681010028"><span class="annot"><span class="annottext">[CmmTickish]
</span><a href="#local-6989586621681010028"><span class="hs-identifier hs-var">ts</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmTickish
</span><a href="#local-6989586621681010029"><span class="hs-identifier hs-var">t</span></a></span><span class="annot"><span class="annottext">CmmTickish -&gt; [CmmTickish] -&gt; [CmmTickish]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span class="annot"><span class="annottext">[CmmTickish]
</span><a href="#local-6989586621681010028"><span class="hs-identifier hs-var">ts</span></a></span><span>
</span><span id="line-603"></span><span>        </span><span class="annot"><a href="#local-6989586621681010035"><span class="hs-identifier hs-var">goStmt</span></a></span><span>  </span><span id="local-6989586621681010027"><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010027"><span class="hs-identifier hs-var">_other</span></a></span></span><span>      </span><span id="local-6989586621681010026"><span class="annot"><span class="annottext">[CmmTickish]
</span><a href="#local-6989586621681010026"><span class="hs-identifier hs-var">ts</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CmmTickish]
</span><a href="#local-6989586621681010026"><span class="hs-identifier hs-var">ts</span></a></span><span>
</span><span id="line-604"></span><span>
</span><span id="line-605"></span><span>
</span><span id="line-606"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-607"></span><span class="hs-comment">-- Access to common global registers</span><span>
</span><span id="line-608"></span><span>
</span><span id="line-609"></span><span class="annot"><a href="GHC.Cmm.Utils.html#baseExpr"><span class="hs-identifier hs-type">baseExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#spExpr"><span class="hs-identifier hs-type">spExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#hpExpr"><span class="hs-identifier hs-type">hpExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#currentTSOExpr"><span class="hs-identifier hs-type">currentTSOExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#currentNurseryExpr"><span class="hs-identifier hs-type">currentNurseryExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-610"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Utils.html#spLimExpr"><span class="hs-identifier hs-type">spLimExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#hpLimExpr"><span class="hs-identifier hs-type">hpLimExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html#cccsExpr"><span class="hs-identifier hs-type">cccsExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-611"></span><span id="baseExpr"><span class="annot"><span class="annottext">baseExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#baseExpr"><span class="hs-identifier hs-var hs-var">baseExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#baseReg"><span class="hs-identifier hs-var">baseReg</span></a></span><span>
</span><span id="line-612"></span><span id="spExpr"><span class="annot"><span class="annottext">spExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#spExpr"><span class="hs-identifier hs-var hs-var">spExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#spReg"><span class="hs-identifier hs-var">spReg</span></a></span><span>
</span><span id="line-613"></span><span id="spLimExpr"><span class="annot"><span class="annottext">spLimExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#spLimExpr"><span class="hs-identifier hs-var hs-var">spLimExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#spLimReg"><span class="hs-identifier hs-var">spLimReg</span></a></span><span>
</span><span id="line-614"></span><span id="hpExpr"><span class="annot"><span class="annottext">hpExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#hpExpr"><span class="hs-identifier hs-var hs-var">hpExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#hpReg"><span class="hs-identifier hs-var">hpReg</span></a></span><span>
</span><span id="line-615"></span><span id="hpLimExpr"><span class="annot"><span class="annottext">hpLimExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#hpLimExpr"><span class="hs-identifier hs-var hs-var">hpLimExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#hpLimReg"><span class="hs-identifier hs-var">hpLimReg</span></a></span><span>
</span><span id="line-616"></span><span id="currentTSOExpr"><span class="annot"><span class="annottext">currentTSOExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#currentTSOExpr"><span class="hs-identifier hs-var hs-var">currentTSOExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#currentTSOReg"><span class="hs-identifier hs-var">currentTSOReg</span></a></span><span>
</span><span id="line-617"></span><span id="currentNurseryExpr"><span class="annot"><span class="annottext">currentNurseryExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#currentNurseryExpr"><span class="hs-identifier hs-var hs-var">currentNurseryExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#currentNurseryReg"><span class="hs-identifier hs-var">currentNurseryReg</span></a></span><span>
</span><span id="line-618"></span><span id="cccsExpr"><span class="annot"><span class="annottext">cccsExpr :: CmmExpr
</span><a href="GHC.Cmm.Utils.html#cccsExpr"><span class="hs-identifier hs-var hs-var">cccsExpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#cccsReg"><span class="hs-identifier hs-var">cccsReg</span></a></span><span>
</span><span id="line-619"></span></pre></body></html>